0

私の Test.rb モデルには、次のようなスコープがあります。

#....
has_many fathers
scope :msr, includes(fathers: :kids)

テーブル/モデル自体にはkids、という名前の列があるとしましょうfinger

コントローラーでは、次のようにクエリを使用しています。

 @tests = Test.msr.where(organization_id: params[:id]).limit(3)

各子供が持っている指の数で並べ替えることができるように、「順序」句を追加したいと思います。しかし、その「注文」句をどこにどのように追加できるかわかりませんか?

4

1 に答える 1

1

試す

scope :ordered_by_kid_fingers, order('kids.fingers DESC')

joinsこれは、アソシエーションをロードするincludesことを前提としています。

>> Test.joins(fathers: :kids).ordered_by_kid_fingers

動作するはずです

更新:スコープで両方を定義

scope :msr, includes(fathers: :kids).order('kids.fingers DESC')
于 2013-03-05T02:47:41.250 に答える