我有Event
模型。它has_many :participants
。
可以执行Event.all.each do |event|
,然后尝试操纵event.participants
但是,是否有更简单的方法让所有参与者参加所有活动?
当您使用正确的方法获得“事件”数组而不是EventArray时,这是OO中的典型问题。
答案 0 :(得分:2)
您可以Participants
获得Event
这样的<{1}}
Participant.where(event_id: Event.pluck(:id))
或只是
Participant.all
如果没有关联Participants
Event
答案 1 :(得分:1)
Participant.joins(:event)
应该让你参加活动的所有参与者。
答案 2 :(得分:1)
MouseButtons _lastButtonUp = MouseButtons.None;
private void ColorChanger_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.BackColor = Color.FromArgb(255, 0, 0);
}
if (e.Button == MouseButtons.Right)
{
this.BackColor = Color.FromArgb(0, 0, 255);
}
_lastButtonUp = e.Button;
}
private void ColorChanger_DoubleClick(object sender, EventArgs e)
{
switch (_lastButtonUp)
{
case System.Windows.Forms.MouseButtons.Left:
this.BackColor = Color.FromArgb(255, 255, 0);
break;
case System.Windows.Forms.MouseButtons.Right:
this.BackColor = Color.FromArgb(0, 255, 0);
break;
}
}
这将为所有与活动相关的参与者提供
答案 3 :(得分:-1)
您可以在此问题中使用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