我有一个有很多会议的客户模型。
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。
我之前遇到类似的问题,与他们挣扎,显然没有从过程中学到很多东西。指向一个好资源的指针,以了解这些情况也将不胜感激。
答案 0 :(得分:8)
这样的东西?
Client.joins(:meetings).group('clients.id').order('max(meetings.meeting_time) DESC')
这将:
max(meetings.meeting_time)
这是每个客户的最新会议