Ruby on rails 按关联对象的属性分组

Ruby on rails 按关联对象的属性分组,ruby-on-rails,ruby,postgresql,Ruby On Rails,Ruby,Postgresql,因此,我希望得到一个哈希值: Event.inludes(:meetings).group ... 但是它对数据库产生了太多的查询:(Event.joins(:meetings).group('meetings.start_at')应该做。但是您想要的是一个按数组分组的方法,所以您应该做的是 @events.group_by{e|e.meeting.start_date} 在多对多的情况下,你应该与 hash = {} Meeting.where("extract(month from sta

因此,我希望得到一个
哈希值

Event.inludes(:meetings).group ...
但是它对数据库产生了太多的查询:(

Event.joins(:meetings).group('meetings.start_at')应该做。但是您想要的是一个按数组分组的方法,所以您应该做的是

@events.group_by{e|e.meeting.start_date}

在多对多的情况下,你应该与

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
result=Hash.new

会议。包括(:事件)。每个{m | result[m.start|u at]|=[];result[m.start|u at]在这种情况下,如果您获取所有与事件相关的会议(:includes),然后执行result=Hash.new;@meetings可能会更好。每个{m | result[m.start|u at]|=[];result[m.start| u at]谢谢!您让我度过了美好的一天!
{"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">], ...]}
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
result = Hash.new
Meeting.include(:events).each {|m| result[m.start_at]||=[]; result[m.start_at] << m.events}
Meeting.includes(:events).inject(Hash.new) do |result, m|
  result[m.start_at]||=[]
  result[m.start_at] << w.events
  result
end