查找用户在帖子上的总投票数

时间:2014-02-04 15:44:07

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

我正在使用thumbs_up gem在帖子上获得投票(赞)。

我为每个用户的统计信息设置了一个页面,我正在尝试查找的统计信息之一显示有多少人投票(赞成)了current_user的帖子。这是我到目前为止所做的,我只需要包含一些仅显示current_users帖子上的计数的内容。

@vote_count = Vote.where("voteable_type = ?", "Update").count
# This shows all of the votes on all of the updates instead of ONLY the vote count of the current_user's updates

投票表有这些列

voteable_id
voteable_type
voter_id
voter_type
...
...

我想我必须将voteable_id与current_user的update_id相关联,但我无法弄清楚。

投票型号

scope :for_voter, lambda { |*args| where(["voter_id = ? AND voter_type = ?", args.first.id, args.first.class.base_class.name]) }
scope :for_voteable, lambda { |*args| where(["voteable_id = ? AND voteable_type = ?", args.first.id, args.first.class.base_class.name]) }
scope :recent, lambda { |*args| where(["created_at > ?", (args.first || 2.weeks.ago)]) }
scope :descending, lambda { order("created_at DESC") }

belongs_to :voteable, :polymorphic => true
belongs_to :voter, :polymorphic => true

attr_accessible :vote, :voter, :voteable if ActiveRecord::VERSION::MAJOR < 4


# Comment out the line below to allow multiple votes per user.
validates_uniqueness_of :voteable_id, :scope => [:voteable_type, :voter_type, :voter_id]

修改

# user.rb
has_many :updates


# update.rb
belongs_to :user

1 个答案:

答案 0 :(得分:1)

尝试:

user.updates.joins(:votes).where(votes: { vote: true }).count