多个协会的总和?

时间:2013-10-10 17:40:06

标签: ruby-on-rails associations

我正在尝试计算多个问题的总回答,但它比这更复杂。

Notifications属于Questions,然后Responses属于Questions

通知是链条的开始。例如,我有2 notification条记录:

[
   #<Notification id: 1, question_id: 58, email: "bob@example.com", frequency: "daily">,
   #<Notification id: 2, question_id: 25, email: "bob@example.com", frequency: "daily"`>
]

我想要找的是这些通知的responses总数。同样,notificationsresponses属于questions

它基本上与为每个人加notification.question.responses.count相同。试着想出一个更直接的方法来解决这个问题。

2 个答案:

答案 0 :(得分:0)

您是否检查了notification.question.responses.count生成的SQL的内容? ActiveRecord应该为此提出正确的查询。

如果您关注的是对列表中的每个通知进行此调用,并且您希望在首次下拉通知列表时获取计数,请在Response属于问题关联上放置counter_cache。然后,当您请求通知列表时,您可以:include => [:question]

答案 1 :(得分:0)

我认为这对您有用(未经测试)

Notification.joins("JOIN responses ON responses.question_id = notifications.question_id").group(:question_id).count