![](/img/trans.png)
[英]How to select all objects that have instances of another object (has_many and has_one association)?
[英]How to get all has_many objects in all model instances?
我有Event
模型。 它有很多has_many :participants
。
可以做Event.all.each do |event|
然后嘗試操縱event.participants
但有沒有更簡單的方法讓所有參與者參加所有活動?
當你使用正確的方法得到一個“事件”數組而不是一個EventArray時,這是OO中的一個典型問題。
您可以獲得屬於此類Event
Participants
Participant.where(event_id: Event.pluck(:id))
要不就
Participant.all
如果沒有沒有相關Event
Participants
Participant.joins(:event)
應該讓你參與一個活動。
Event.joins(:participants).select("participants.*")
這將為所有與事件相關聯的參與者提供
您可以在此問題中使用eager_load
和group_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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.