Ruby on rails Rails与ActiveRecord有许多总和和计数
我有一个进退两难的局面,我想我可能把自己编入了困境。这是设置 我的网站有很多用户。每个用户都有他们发布的故事集。每个故事都有来自其他用户的评论集 我想在用户页面上显示来自其他用户的评论总数 所以一个用户有很多故事,一个故事有很多评论Ruby on rails Rails与ActiveRecord有许多总和和计数,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我有一个进退两难的局面,我想我可能把自己编入了困境。这是设置 我的网站有很多用户。每个用户都有他们发布的故事集。每个故事都有来自其他用户的评论集 我想在用户页面上显示来自其他用户的评论总数 所以一个用户有很多故事,一个故事有很多评论 我尝试的是在@stories中加载所有用户的故事,然后显示@stories.comments.count,但当我尝试这样做时,会得到未定义的方法“comments”。有没有一种有效的ActiveRecord方法可以做到这一点?在控制器中,您应该有这样的功能(注意的使
我尝试的是在@stories中加载所有用户的故事,然后显示@stories.comments.count,但当我尝试这样做时,会得到未定义的方法“comments”。有没有一种有效的ActiveRecord方法可以做到这一点?在控制器中,您应该有这样的功能(注意
的使用包括):
然后,在您的视图中,您可以执行以下操作来显示该特定用户的评论总数:
Total number of comments: <%= @stories.map{|story| story.comments.length}.sum %>
评论总数:
类用户
现在您应该能够获得User.last.comments.count
我认为您需要对其进行进一步细化,以获得适当的标签。快速解决方案是迭代@stories集合并将计数相加。不过,这不是一个纯粹的活动记录解决方案
totalComments = 0
@stories.each do |story|
totalComments += story.count
end
对于纯活动记录解决方案,我需要假设每个关联都有多个对应的“属于”关联。所以一个用户有很多故事,一个故事属于一个用户。如果是这种情况,并且评论与故事有类似的关联,那么您可以按用户id搜索评论。类似于:
Comments.where("comment.story.user" => "userId")
我希望这会有所帮助。这是一个很好的解决方案。
totalComments = 0
@stories.each do |story|
totalComments += story.count
end
Comments.where("comment.story.user" => "userId")