将“order”添加到模型中定义的范围

时间:2013-03-05 02:23:32

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 rails-activerecord

在我的Test.rb模型中,我有一个这样的范围:

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

kids表/模型,其自我说有一个名为finger的列

在控制器中我正在使用我的查询:

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

我想添加一个“order”子句,这样我就可以根据每个孩子的手指数来排序。 但不确定在哪里以及如何添加“订单”条款?

1 个答案:

答案 0 :(得分:1)

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

这假设您通过joinsincludes

加载关联
>> Test.joins(fathers: :kids).ordered_by_kid_fingers

应该有效

更新:在范围内定义

scope :msr, includes(fathers: :kids).order('kids.fingers DESC')