Ben*_*ier 4 rubygems badge ruby-on-rails-3 merit-gem
我想在我的rails应用程序中添加一个点,等级和徽章系统.
该优点宝石看起来很酷,但我想,以确保它在使用之前是如何工作的.
你定义徽章的方式
# app/models/merit/badge_rules.rb
grant_on 'comments#vote', :badge => 'relevant-commenter', :to => :user do |comment|
comment.votes.count == 5
end
Run Code Online (Sandbox Code Playgroud)
和点
# app/models/merit/point_rules.rb
score 10, :to => :post_creator, :on => 'comments#create' do |comment|
comment.title.present?
end
Run Code Online (Sandbox Code Playgroud)
表明该操作是作为一个钩子完成的,就在这些情况下的动作(comments#vote或comments#create)之后.我不知道徽章和积分的计算/归属是如何工作的,所以我不确定.
随着我的应用程序将随着时间的推移而发展,我希望能够更改点和徽章规则并重新评估它们.例如:假设我首先决定在帐户激活时授予10个积分.我希望能够将其更改为20,然后重新评估所有激活的配置文件并获得+10点增加.徽章也一样.
这个宝石支持吗?
可以在具有优点gem的应用程序中重新计算声誉.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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |