Voters と Polls の 2 つのモデルがあります。
有権者は次の 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
投票者.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 が返されます。自力でここまでたどり着けたのは奇跡のような気がするが、今はただ迷っているだけだ。おそらくこれは不可能であり、データベースに手動でクエリを実行する必要があるだけですか?