我有一个有很多会议的客户模型。
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/