ruby-on-rails - 优点 Rails 4 不适用于更新操作

标签 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

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

最佳答案

您批准文章的设置如何?你可以在你的 Controller 中做到这一点,但我更愿意让它们保持瘦,并在你的胖模型中完成逻辑。

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

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

关于ruby-on-rails - 优点 Rails 4 不适用于更新操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31307141/

相关文章:

spring-mvc - Spring MVC - Controller 方法没有被调用

ruby-on-rails - Rails 测试失败,但系统运行正常

ruby-on-rails - 原始字符串 REXML 解析中的非法字符 '&'

ruby-on-rails - 错误 : Failed to build gem native extension on Mavericks

javascript - Rails 嵌套属性 form_for for has_many 使用 javascript 无限嵌套模型

testing - Laravel 测试错误

forms - 如何在GSP中找到从哪个 Controller Action 中调用它?

ruby-on-rails - has_many 与 `limit` 的关联获取所有记录而不是提供的限制

ruby-on-rails - 生成独特的,难以猜测的 “coupon”代码

mongodb - Mongoid 中的事务 (MongoDB)