查找其他用户在帖子上收到的用户总票数

时间:2014-02-14 13:54:48

标签: ruby-on-rails ruby ruby-on-rails-4 gem

我正在使用此宝石评论:https://github.com/lml/commontator

设置为轻松插入此gem以对评论进行投票:https://github.com/ryanto/acts_as_votable

我正在使用rails 4 btw,它与两个宝石兼容。

在我的用户模型中:

class User < ActiveRecord::Base
  acts_as_voter
  acts_as_commentator
  has_many :comments
end

在我的评论模型中:

class Comment < ActiveRecord::Base
  acts_as_votable
  belongs_to :user
end

一切似乎都很好。但是当试图计算用户总票数(用户在所有评论上收到的总票数)时(业力)

<%= @user.votes.count %>

我收到此错误

undefined method `votes' for #<User:0x0000010dbf23a0>

所以我尝试了这个:

<%= @user.comments.map{|c| c.votes.count}.inject(:+) %>

导致了另一个错误:

SQLite3::SQLException: no such column: commontator_comments.commontator_id: SELECT "commontator_comments".* FROM "commontator_comments"  WHERE "commontator_comments"."commontator_id" = ? AND "commontator_comments"."commontator_type" = ?

我试过了:

@user.find_voted_items.count

@user.get_voted(Comment).count ? 

@user.comments.collect{|c| c.votes.size}.inject(:+)

似乎没什么用。我猜它与commontator gem处理代理关联关系的方式有关。如何呈现特定用户在所有评论中收到的总票数?非常感谢任何帮助!

编辑:我确实运行了所有迁移。

1 个答案:

答案 0 :(得分:1)

你不应该对评论进行投票吗?用户模型acts_as_voter因此,根据gem上的文档,您可以检索用户使用find_voted_items投票的项目列表,但是注释模型是您可以计算的项目{ {1}}因为这是用户投票的内容。

编辑,给出评论。最简单的,你可能需要类似的东西:

votes

虽然你可以用sum = 0 @user.comments.each do |comment| sum += comment.votes.count end 或者甚至使用精心构造的“where子句”在投票字段上使用Activerecord#sum来更有说服力。