Rails按关联计数排序集合

时间:2015-06-16 01:35:47

标签: sql ruby-on-rails activerecord

我在Rails 4工作,有两个相关模型:

帐户模式
has_many :agent_recalls, primary_key: "id", :foreign_key => "pickup_agent_id", class_name: "Booking"

因此,像Account.find(10).agent_recalls这样的查询会起作用。

我想要做的是按此agent_recalls关联对整个帐户集合进行排序。

理想情况下,它看起来像(但显然不是):

@agents = Account.where(agent: true).order(:agent_recalls)

问题:按此agent_recall计数输出有序列表的正确查询是什么?

1 个答案:

答案 0 :(得分:0)

要完成您所寻找的目标,您有两个选择:

首先,只有一个查询,但它会暗示一个连接,所以会丢失没有任何agent_recalls的帐户,所以我会放弃这个选项

第二,我认为这个更适合你想要做的事情

Account.find(:all, :conditions => { :agent => true }, :include => :agent_recalls).sort_by {|a| a. agent_recalls.size}

正如您所看到的是查询和ruby之间的混合,希望它有所帮助:)