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