簡體   English   中英

如何在所有模型實例中獲取所有has_many對象?

[英]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_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM