
Ваня
26.05.2016
14:48:54

Boris
26.05.2016
14:49:15
ну может я не так понял - если метод будет возвращать "/posts/#{id}" - то ок

Ваня
26.05.2016
14:49:24
короче надо просто slim юзать)

Aleserche
26.05.2016
14:51:29
Или доки почитать

Google

Aldar
26.05.2016
14:51:30
эхх, привык к рельсовым хелперам
что аж для синатры сразу охота link_to посоветовать

Boris
26.05.2016
14:56:37
вообще я бы оставил именно так - явное - лучше не явного

Vasilij
26.05.2016
15:17:19
это почему это?
может потому, что модель (или что там) не должна знать о таких вещах как ссылки (что явно есть частью представления)?

Dmitry
26.05.2016
15:19:43

Nick
26.05.2016
15:20:38

Boris
26.05.2016
15:21:21
модель не должна уметь это делать

Vasilij
26.05.2016
15:21:32
Не, я истину не предлагаю, просто говорю, что идея с to_href не очень. Да и что вообще значит to_href? А если у поста 2 урла - на апи и на юай

Boris
26.05.2016
15:21:37
сингл респонсибилити
вот это все
ну есть view контекст, этому место в шаблоне
зачем оверинженирить и добавлять какие то хелперы вот это все

Vasilij
26.05.2016
15:24:04

Google

Boris
26.05.2016
15:24:20
ну они от этого дико страдают
то есть конечно магия по началу нравится - думаешь о как клево, не надо пиcать html, link_to вот это все

Ваня
26.05.2016
15:26:58

Vasilij
26.05.2016
15:27:36
можно явно сделать но не пихать вот это “/posts/#{post.id}” во вьюху. Можно же сделать какой-то UriResolver.uri_to_post(post.id) или что-то подобное
Можно по модулям сделать UriResolver::Post.path(post.id)

Boris
26.05.2016
15:28:30
ну можно, да, конечно. что угодно можно, но если этот код будет читать другой человек, что будет понятнее? :)

Aldar
26.05.2016
15:28:51
Что на руби собеседованиях спрашивают?
И на рельсовых
1. scope :source, ->(source) { where(source: source) }
2. scope :source, ->(source) { where('source = ?', source) }
в чём разница?

Vasilij
26.05.2016
15:29:54
Ну тут в зависимости какой проект. Если побольше (или будет расти). Если бы я читал немаленький проект с вот этим говном во вьюхах - я бы вилки в глаза втыкнул
как потом это поддерживать?

Boris
26.05.2016
15:30:44
мой опыт говорит об обратном - легче поддерживать тот код, где вью максимально тупые, где минимальное кол-во магии

Vasilij
26.05.2016
15:31:33
Да что ты со своей магией. Можно код раскидать без неё
или теперь любой код что не “в лоб” считается магией?
я не говорю о диком оверинжиниринге, просто раскидать код и по делам

Ваня
26.05.2016
15:35:34
скиньте статей почитать о том как это лучше сделать) Мне в голову лезит только самы простой способ, наверное потому что еще знанийй мало и тд

Boris
26.05.2016
15:35:36
любой код, который усложняет простую хрень типа ссылку сделать - бессмысленный :)

Vasilij
26.05.2016
15:37:33
поменял роут
@
грепай все вьюхи в поисках

Boris
26.05.2016
15:38:42
все вьюхи :) камон. их будет максимум штук 5

Vasilij
26.05.2016
15:41:32
так я ж говорю от проекта зависит) Если это наваять форму и список к ней - там без разницы

Google

Dmitry
26.05.2016
15:48:50
причем в первом случае, в лямбде будет выполнен метод where с hash аргументом
в по втором два аргумента - строка 'source = ?' и объект source
ума не приложу зачем такое нужно с практической точки зрения =)
наверно что бы коллеги себе мозг повзрывали

Ваня
26.05.2016
15:51:29
это чтобы никто кроме тебя не мог код поддерживать)

Dmitry
26.05.2016
15:52:23
ага, проще было в комменте указать, что автор - мудак, чем делать подобное

Артем
26.05.2016
16:38:33

Dmitry
26.05.2016
16:39:43

Артем
26.05.2016
16:40:11
то есть вы не в курсе, что такое scope и зачем он нужен в ActiveRecord?

Aldar
26.05.2016
16:41:35
?
Ну ничего, скоро узнают)

Aldar
26.05.2016
16:45:47
scope просто class метод создаёт
для AR

Dmitry
26.05.2016
16:45:59

Артем
26.05.2016
16:49:14
то есть никакого шаблона не увидели? ну ничего, научитесь
а разница проста - в первом случае будет строится полноценный запрос средствами arel, а во втором - просто в sql вставится срока с экранированными параметрами вместо знаков ?

Aldar
26.05.2016
16:52:14
Так что лучше использовать?

Артем
26.05.2016
16:53:36
в общих случая лучше hash, а если нужно сравнение, типа > или < - то без строки можно конечно обойтись, но с ней проще

Google

Aldar
26.05.2016
16:54:55
Чувак один мне сказал что 1 способ лучше
второй не всегда работает

Dmitry
26.05.2016
16:55:03
http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-where
https://github.com/rails/rails/blob/ad078767fb4d4a78224efaaf541e9bc847cde245/activerecord/lib/active_record/relation/query_methods.rb#L568
например

Артем
26.05.2016
16:56:19
а зачем в этом конкретном случае ссылки на методы?
если все очевидно

Dmitry
26.05.2016
16:58:02
Ну да, если вы кроме рельс ничего не видели, то конечно да

Артем
26.05.2016
16:58:27
я видел много чего кроме rails) а вы?

Admin
ERROR: S client not available

Dmitry
26.05.2016
16:59:31
Артем, ну это уже не профессионально, извините.

Aldar
26.05.2016
17:00:02
не понял, в первой случае понятно будет строиться AST с помощью arel

Артем
26.05.2016
17:00:32

Aldar
26.05.2016
17:00:39
а во втором случае, к sql строке просто добавиться в конец 'source = ....'?

Артем
26.05.2016
17:01:09

Aldar
26.05.2016
17:01:20
а в чём разница получится?

Артем
26.05.2016
17:01:21
c AND раумеется
в итоге? ни в чем
разница в пути к итогу

Google

Aldar
26.05.2016
17:01:52
хм, мне чел сказал что 2 способ не верный, а вот почему я уже забыл

Артем
26.05.2016
17:02:30
не верный он потому, что некоторые делают вот так where("source = #{source}")
что открывает пусть к SQL инъекции

Aldar
26.05.2016
17:03:29
тут инъекции не будет

Артем
26.05.2016
17:03:38
поспорим? )

Aldar
26.05.2016
17:03:44
если ?
если знак вопроса

Артем
26.05.2016
17:03:55
а, со знаком да, не будет

Aldar
26.05.2016
17:04:11
ну я с интерполяцией даже не рассматриваю

Dmitry
26.05.2016
17:04:21

Артем
26.05.2016
17:04:24
ну а ещё если в запросе фигурирует join
то со строкой могут быть конфликты
если в другой таблице есть такая же колонка
Arel учитывает это и добавляет в sql имя таблицы

Aldar
26.05.2016
17:05:05
тогда непонятно к какой таблице эта колонка будет относиться

Артем
26.05.2016
17:05:12

Aldar
26.05.2016
17:06:24
всё, теперь ясно, спасибо)

Артем
26.05.2016
17:06:25
@dshmelev а какой ваш основной язык программирования?

Dmitry
26.05.2016
17:07:12
в настоящий момент именно ruby

Артем
26.05.2016
17:07:36
и вас не коробит писать map или each ?

Dmitry
26.05.2016
17:07:51
это тут причем?

Артем
26.05.2016
17:08:12
при том, что map { |a| .... } - это proc