我正在尝试在我的应用中实现信誉系统(类似于stackoverflow)。我希望能够在旁边的声誉分数中显示任何最近的添加或减少。这种实施的最佳方式是什么?
对于例如声望得分:150 +10或声望得分:150 -20
我现在能想到的唯一方法是创建另一个名为temporary_reputation的列/字段,并在其中保留最新的加法/减法。然后可能每20-30分钟创建一个cron来清除该列。也许我可以用缓存做点什么?
答案 0 :(得分:0)
我认为你的建议无法解决你的问题。
我更希望实现一个额外的模型,例如:ScoreChange
,它将具有
以及所需的关系。
对于具有信誉评分的每个项目,您可以使用汇总的score
字段,然后显示所需的所有更改。
例如:
class Item < ActiveRecord::Base
has_many :score_changes
def last_changes(n)
score_changes.last_changes_sum(n)
end
def score_with_last_change(n = 3)
[score, last_changes(n)]
end
和
class ScoreChange < ActiveRecord::Base
belongs_to :item
def self.last_changes_sum(n)
order('timestamp desc').limit(n).pluck(:value).inject(&:+)
end
end