初学者问题:
活动可以有多个参与者。每个活动都有一个日期,但您可以在同一天进行不同的活动。连接表使参与者和活动之间建立联系。
我正在寻找列出当天所有参与者的最简单方法。我也试图做一个简单的"计数"了解在一个日期有多少参与者。
Activity.last.participants.count
告诉我这次活动的参与者人数
Activity.where(avtivity_date: Date.today)
给我一个包含当天所有活动的数组。所以我必须遍历每一个来计算或列出参与者并做出总和。
我正在寻找类似的东西:
Activity.where(avtivity_date: Date.today).participants.count
返回当天参与者的人数。 这可能吗?我应该继续迭代并计算吗?
我不确定我可以用来进行文档搜索的关键字,任何提示/文档链接都将不胜感激!
谢谢!
答案 0 :(得分:1)
您需要连接两个表
Activity.where(activity_date: Date.today).joins(:participants).count
答案 1 :(得分:1)
您可以使用select
和group
子句选择当天的所有参与者。然后使用.count
:
Activity.where(activity_date: Date.today).select(:participant_id).group(:participant_id).count