![](/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.