刚刚使用我的rails 4应用程序获得了Merit gem.
到目前为止,用户在创建子文章时收到第一个徽章.
我试图授予的第二个徽章是当该子粒子实际获得批准时,这只能由管理员完成.我已经尝试使用subarticle#update作为操作,但它没有授予用户徽章.也许它与管理员更新子管理面板(rails admin gem)有关?
这是我在初始化程序中的徽章:
Merit::Badge.create!(
id: 2,
name: "Serious Writer",
description: "Things are gettin' serious! You have successfully written an approved article."
)
以下是规则:
grant_on ['subarticles#update','subarticles#destroy'], badge_id: 2, badge:'serious writer', to: :user, temporary: true do |subarticle|
subarticle.user.subarticles.approved.count >= 1
end
有什么建议?这个宝石还是新手,所以也许是一个简单的错误.
最佳答案 批准文章的设置是什么?你可以在你的控制器中做到这一点,但我宁愿保持它们的瘦,并在你的胖模型中完成逻辑.
请注意,还有其他方法可以做到这一点,但这是我过去所做的.
class Subarticles < ActiveRecord::Base
...
after_update :provide_badge_when_approved
private
def provide_badge_when_approved
self.user.add_badge(2) if (self.approved_changed? && self.approved == true)
end
...
end