属性Xを持つモデルAと、属性Yを持つBというAの子モデルがある場合、AのすべてのインスタンスをYとXで並べ替えるにはどうすればよいですか?
質問する
4448 次
2 に答える
10
を使用default_scope
して、すべてのモデルインスタンスを関連付けで並べ替えることができます。関連するモデル名を:includes
パラメータに渡し、順序パラメータを調整するだけです。
default_scope :include => 'record', :order => 'records.attribute'
ただし、default_scope
強くお勧めしません。よりクリーンなアプローチは、コントローラーから呼び出すことができるクラスメソッドを親モデルに作成することです。
def self.all_ordered_by_child
includes(:records).order('records.attribute DESC')
end
親モデルからすべてのレコードを呼び出すすべてのインスタンスを更新する必要があります。
于 2012-08-28T17:29:39.823 に答える
2
代わりに小文字を使用します。
a_instances.sort_by{|a| [a.b.y, a.x]}
于 2012-08-28T17:05:45.490 に答える