优点 rails 4 不适用于更新操作
Merit rails 4 not working for update action
刚刚获得优异 gem 和 运行 我的 rails 4 应用程序。
到目前为止,用户在创建子文章时收到第一个徽章。
我要授予的第二个徽章是当该子文章实际获得批准时,这只能由管理员完成。我试过使用 subarticle#update
作为动作,但它并没有授予用户徽章。也许这与管理员从管理面板更新子文章有关 (rails 管理员 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
有什么建议吗?这个 gem 还很陌生,所以这可能是一个简单的错误。
您批准文章的设置是怎样的?您可以在您的控制器中执行此操作,但我更愿意让它们保持纤细,并在您的胖模型中完成逻辑。
请注意,还有其他方法可以做到这一点,但这是我过去所做的。
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
刚刚获得优异 gem 和 运行 我的 rails 4 应用程序。
到目前为止,用户在创建子文章时收到第一个徽章。
我要授予的第二个徽章是当该子文章实际获得批准时,这只能由管理员完成。我试过使用 subarticle#update
作为动作,但它并没有授予用户徽章。也许这与管理员从管理面板更新子文章有关 (rails 管理员 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
有什么建议吗?这个 gem 还很陌生,所以这可能是一个简单的错误。
您批准文章的设置是怎样的?您可以在您的控制器中执行此操作,但我更愿意让它们保持纤细,并在您的胖模型中完成逻辑。
请注意,还有其他方法可以做到这一点,但这是我过去所做的。
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