2017-02-27 55 views
0

我有Event模型。它has_many :participants如何獲取所有模型實例中的所有has_many對象?

可以做Event.all.each do |event|,然後試圖操縱event.participants

但有更簡單的方式來獲得所有事件的所有參與者?

這是OO中的一個典型問題,當您使用正確的方法獲取「事件」數組而不是EventArray時。

回答

2

你可以得到Participants是任何Event喜歡的部分原因

Participant.where(event_id: Event.pluck(:id)) 

或只是

Participant.all 

如果沒有Participants沒有關聯Event

1

Participant.joins(:event)應該讓你的所有一個事件的參與者。

0

Event.joins(:participants).select("participants.*") 這會給出一個與事件

-1

相關的,你可以在這個問題上使用eager_loadgroup_by所有參與者。在你的情況下

event = Event.eager_load(:participants).group_by(&:participants) 

它會創建一個與相關參與者的所有事件的散列。您可以訪問參與者的0索引和該事件的1個索引。類似於

event.first[0] = all the participants of that event 
event.first[1] = that event 
相關問題