2011-10-24 1 views
1

属性の前にそのモデルを宣言する必要がありますか?:私はモデルで指定されたスコープを作成する場合、それはあなたがあなたのクエリで使用されている属性の前にモデルを呼び出す必要がある

scope :sorted, order('pages.position ASC') 

VS

scope :sorted, order('position ASC') 

規則後者好ましい、またはインラインでありますか?いずれにもメリットはありますか?それとも明快さや読みやすさの問題なのでしょうか?

答えて

2

は、スコープが、同じ名前のフィールドを持つ別のモデルとの結合で使用される場合、モデルを宣言する必要があります。

company has_one :contactとし、Contactpositionとする。その後

Company.sorted.joins(:contact) 

は、並べ替えに使用する必要がありますpositionフィールドのどの不明だという(SQLレベルで)文句を言うでしょう。

それ以外の場合はオプションです。

関連する問題