我有两种模式:选民和民意调查。
选民可以通过两种方式对投票进行投票:1)上/下投票2)权力投票
我有上/下投票工作,但我希望能够知道用户累积的权力投票数量,因为他们只有一定数量。
poll.rb
class Poll < ActiveRecord::Base
belongs_to :voter
has_reputation :votes,
source: :voter
has_reputation :powervotes,
source: :voter,
source_of: [{reputation: :voter_powervotes, of: :voter}]
has_reputation :score,
source: [
{ reputation: :votes },
{ reputation: :powervotes, weight: 2 }]
def upvote(voter)
self.add_or_update_evaluation(:votes, 1, voter)
end
def downvote(voter)
self.add_or_update_evaluation(:votes, -1, voter)
end
def powervote(voter)
self.add_or_update_evaluation(:powervotes, 1, voter)
end
def score
self.reputation_for(:score).to_i
end
end
voter.rb
class Voter < ActiveRecord::Base
has_many :polls
has_reputation :voter_powervotes,
source: [reputation: :powervotes, of: :polls]
def powervotes
self.reputation_for(:powervotes).to_i
end
end
当我作为用户对某个投票进行powervote()然后调用Voter.powervotes时,它返回0.什么给出?我觉得这是一个奇迹,我自己走得这么远,但现在我迷失了。也许这是不可能的,我只需要手动查询数据库?
答案 0 :(得分:0)
这是一个在gem的创建者Katsuya Noguchi的帮助下找到的简单解决方案。当您可以计算power_votes的评估对象时,无需在选民模型中创建:voter_powervotes声望。在看到它有多么简单之后,我感觉像是一个傻瓜。希望这有助于其他人!
voter.rb
def powervotes
Poll.evaluated_by(:power_votes, self).count.to_i
end
GitHub问题参考:#63 STI pulls wrong target_id for non-primary reputation