0
class Event < ActiveRecord::Base
has_many :meetings
end
class Meeting < ActiveRecord::Base
belongs_to :event
end
如何写入mysql查询来搜索所有事件group_by
会议DATE(start_at)
?按属性分组关联对象
Event.inludes(:meetings).group ...
因此,我希望得到一个Hash
:
{"2014-01-24"=>[#<Event id: , title: "First", created_at: "2014-01-24 16:02:52", updated_at: "2014-01-24 16:02:52">, #<Event id: 2, title: "Second", created_at: "2014-01-24 16:02:52", updated_at: "2014-01-24 16:02:52">], "2013-01-29"=>[#<Event id: 3, title: "Third", created_at: "2013-01-29 05:30:40", updated_at: "2014-01-29 05:30:40">], ...]}
PS:我使用PostgreSQL
现在,我通过这种方式得到它:
hash = {}
Meeting.where("extract(month from start_at) = ?", Date.today.month).pluck('DATE(start_at)').uniq.each do |date|
hash[date] = Event.includes(:meetings).where("DATE(meetings.start_at) = ?", date).references(:meetings)
end
但它产生了如此多的查询到数据库:(
事件'has_many'会议 – zolter
那么在这种情况下,如果您获取与相关事件(:includes)的所有会议,然后执行 result = Hash.new; @ meetings.each {| M |导致[m.start_at] || = [];结果[m.start_at] << m.events} – sirfilip
谢谢!你让我今天一整天都感觉很好! – zolter