2017-02-27 5 views
0

私はEventモデルを持っています。それはhas_many :participantsです。 event.participantsすべてのモデルインスタンスでhas_manyオブジェクトをすべて取得する方法は?

を操作しようとする。しかし、すべてのイベントのためにすべての参加者を取得する簡単な方法はあり

、その後Event.all.each do |event|んとすることはできますか?

正しいメソッドを持つEventArrayではなく、「イベント」の配列を返すのは、一般的な問題です。あなたは何Participantsが関連Event

答えて

2

イベントの参加者。

1

Participant.joins(:event)せずに存在しない場合は、この

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

か、単に

Participant.all 

のような任意のEventの一部であるParticipantsはあなたのすべてを取得する必要があります得ることができます

0

Event.joins(:participants).select("participants.*") これは、あなたがこの問題にeager_loadgroup_byを使用することができるイベント

-1

に関連付けられているすべての参加者を得られます。あなたの場合

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

これは、関連する参加者とすべてのイベントのハッシュを作成します。参加者のための0のインデックスとそのイベントのための1つのインデックスにアクセスすることができます。何かのように

event.first[0] = all the participants of that event 
event.first[1] = that event 
関連する問題