#ruby-on-rails
#ruby-on-rails
Вопрос:
При создании именованных областей в модели необходимо ли вызывать модель перед атрибутом, который вы используете в своем запросе?
Пример
scope :sorted, order('position ASC')
против
scope :sorted, order('pages.position ASC')
является ли последнее предпочтительным или встроенным в соглашения? есть ли преимущества в любом из них? или это просто вопрос ясности или разборчивости?
Ответ №1:
Вам нужно будет объявить модель, если область будет использоваться с объединением с другой моделью, у которой есть поле с тем же именем.
Скажите company has_one :contact
, и Contact
у position
него есть . Затем
Company.sorted.joins(:contact)
будет жаловаться (на уровне SQL), что неясно, какое из position
полей следует использовать для сортировки.
В противном случае это необязательно.