0

我试图统计多个问题的总回答,但它比这更复杂一些。

我有Notifications那个属于Questions然后Responses那个属于Questions

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

[
   #<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为每一个相加相同。只是想找出一种更直接的方法来解决这个问题。

4

2 回答 2

0

您是否检查过生成的 SQL 的用途notification.question.responses.count?ActiveRecord 应该为此提供正确的查询。

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

于 2013-10-10T18:26:05.537 回答
0

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

Notification.joins("JOIN responses ON responses.question_id = notifications.question_id").group(:question_id).count
于 2013-10-10T18:26:17.533 回答