Вопрос о методе ActiveRecord # default_scope и порядке по умолчанию - PullRequest
5 голосов
/ 23 июля 2010

Вопрос о default_scope с Rails 2/3.В моем проекте на Rails 3 я использую много default_scope, чтобы упорядочить по create_at desc.Итак, сначала я написал:

default_scope order("created_at desc")

во многих моих моделях.Но проблема в том, что create_at существует почти в каждой из моих таблиц приложений ... Так что, если я напишу запрос, который просто объединяет две таблицы, я получу неоднозначный столбец ошибки SQL create_at ... Поэтому мне пришлось переписать все default_scopesвключить table_name, например:

default_scope order("posts.created_at desc")

Есть ли лучший способ решить эту проблему или это единственное решение?

Спасибо.

1 Ответ

9 голосов
/ 23 июля 2010

Вы должны всегда указывать имя таблицы при использовании строк SQL в Rails, чтобы избежать этих неоднозначностей. Обратите внимание, что вы можете сделать:

default_scope order("#{table_name}.created_at desc")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...