在我的Test.rb模型中,我有一个这样的范围:
#....
has_many fathers
scope :msr, includes(fathers: :kids)
kids
表/模型,其自我说有一个名为finger
的列
在控制器中我正在使用我的查询:
@tests = Test.msr.where(organization_id: params[:id]).limit(3)
我想添加一个“order”子句,这样我就可以根据每个孩子的手指数来排序。 但不确定在哪里以及如何添加“订单”条款?
答案 0 :(得分: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')