我有一个有很多会议的客户模型。

class Client < ActiveRecord::Base

  has_many :meetings

end

class Meeting < ActiveRecord::Base

  belongs_to :client

end


我想产生一个ActiveRecord查询,该查询将返回按最近会议的顺序排序的客户端(由Meeting_time列确定),但不知道如何执行此操作。我显然需要以某种方式加入表,但是我不知道如何在AR中生成合适的子查询。如何编写每个客户仅包含1个会议的联接,尤其是最近的会议(即,给定Meetings.client_id的Meetings.meeting_time的最大值)。我的数据库是PostgreSQL。

我以前也遇到过类似的问题,与之抗争,并且显然没有从该过程中学到很多东西。指向了解此类情况的良好资源的指针也将受到赞赏。

最佳答案

像这样吗

Client.joins(:meetings).group('clients.id').order('max(meetings.meeting_time) DESC')


这将:


抓住客户
加入他们的会议
按客户分组(id)
现在我们可以使用max(meetings.meeting_time)这是每个客户的最新会议
然后按最新会议时间的降序对客户进行排序

关于ruby-on-rails - 如何按关联记录的最大值对表进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16493259/

10-12 04:36