我定义了一个非常简单的信誉系统。
class Post < ActiveRecord::Base
has_reputation :votes, :source => :user, :aggregated_by => :sum
def upvote(user)
self.add_or_update_evaluation(:votes, 1, user)
end
def downvote(user)
self.add_or_update_evaluation(:votes, -1, user)
end
def score
self.reputation_for(:score).to_i
end
end
class User < ActiveRecord::Base
has_reputation :karma,
:source => [:reputation => :votes, :of => :posts, :weight => 10],
:aggregated_by => :sum
def karma
self.reputation_for(:karma).to_i
end
end
在大多数情况下,它都有效。用户可以更改他们的投票、赞成或反对,并正确返回帖子的分数。
但是,当我得到用户的业力时,如果他们的一个帖子有 2 个赞成票,我希望他们的业力是 20,但会返回 10。知道这里有什么问题吗?