4

我想在我的 rails 应用程序中添加一个积分、等级和徽章系统。

功德宝石看起来很酷,但我想在使用它之前确定它是如何工作的。

定义徽章的方式

# app/models/merit/badge_rules.rb
grant_on 'comments#vote', :badge => 'relevant-commenter', :to => :user do |comment|
  comment.votes.count == 5
end

和点

# app/models/merit/point_rules.rb
score 10, :to => :post_creator, :on => 'comments#create' do |comment|
  comment.title.present?
end

建议将操作作为钩子完成,在这些情况下,就在操作 (comments#vote或) 之后。comments#create我还没有看过徽章和积分的计算/归属是如何工作的,所以我不确定。

随着我的应用程序会随着时间的推移而发展,我希望能够更改积分和徽章规则并重新评估它们。例如:假设我首先决定在帐户激活时给予 10 分。我希望能够将其更改为 20,然后重新评估所有激活的配置文件并获得 +10 点增加。徽章也是一样。

这个宝石支持吗?

4

1 回答 1

10

可以在具有优点宝石的应用程序中重新计算声誉。Merit 会记录哪些动作触发了Merit::Action模型中的哪些点/徽章授予,并映射到merit_actions表中。

以下脚本应该可以工作(先备份,因为我还没有在生产中这样做):

# 1. Reset all badges/points granting
Merit::BadgesSash.delete_all
Merit::Score::Point.delete_all

# 1.1 Optionally reset activity log (badges/points granted/removed until now)
Merit::ActivityLog.delete_all

# 2. Mark all `merit_actions` as unprocessed
Merit::Action.all.map{|a| a.update_attribute :processed, false }

# 3. Recompute reputation rules
Merit::Action.check_unprocessed
Merit::RankRules.new.check_rank_rules

关于优点内部的注释(“一般优点工作流程”维基页面)

于 2013-04-14T00:38:57.557 回答