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 回答