Merit rails 4不适用于更新操作

时间:2015-07-09 02:34:28

标签: ruby-on-rails ruby-on-rails-4 controller badge merit-gem

刚刚使用我的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

有什么建议吗?这个宝石还是新手,所以也许是一个简单的错误。

1 个答案:

答案 0 :(得分:2)

您批准文章的设置是什么?你可以在你的控制器中做到这一点,但我更喜欢让它们变瘦,并在你的胖模型中完成逻辑。

请注意,还有其他方法可以做到这一点,但这是我过去所做的。

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