4

Rails 4 アプリで Merit gem を起動して実行しました。

これまでのところ、サブ記事を作成すると、ユーザーは最初のバッジを受け取ります。

私が授与しようとしている 2 番目のバッジは、そのサブ記事が実際に承認されたときです。これは管理者だけが行うことができます。アクションとして使用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

助言がありますか?この宝石はまだ新しいので、単純な間違いかもしれません。

4

1 に答える 1

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
于 2015-07-19T20:36:02.510 に答える