繁体   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