Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 优点rails 4不适用于更新操作_Ruby On Rails_Ruby On Rails 4_Controller_Badge_Merit Gem - Fatal编程技术网

Ruby on rails 优点rails 4不适用于更新操作

Ruby on rails 优点rails 4不适用于更新操作,ruby-on-rails,ruby-on-rails-4,controller,badge,merit-gem,Ruby On Rails,Ruby On Rails 4,Controller,Badge,Merit Gem,刚刚用我的rails 4应用程序启动并运行了Merit gem 到目前为止,用户在创建子标签时会收到第一个徽章 我想授予的第二个徽章是当该子条款实际获得批准时,这只能由管理员完成。我曾尝试使用子条款#update作为操作,但它没有授予用户徽章。也许这与管理员从管理面板(rails admin gem)更新子文章有关 这是我在初始值设定项中的徽章: Merit::Badge.create!( id: 2, name: "Serious Writer", description: "Th

刚刚用我的rails 4应用程序启动并运行了Merit gem

到目前为止,用户在创建子标签时会收到第一个徽章

我想授予的第二个徽章是当该子条款实际获得批准时,这只能由管理员完成。我曾尝试使用
子条款#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
类子节
您可能需要覆盖rails管理控制器,就像我们对Desive所做的那样。另外,
grant\u on
可能应该为
'admin/subarticles\35; update'
调用。您知道我将为控制器分配什么类吗?对于design-its
Users::RegistrationsController
,但不确定它如何与rails\u admin一起工作。谢谢你的帮助@TuteCIt似乎不起作用。当从普通表单(edit.html.erb)更新子条目时,该徽章会被授予完美的奖章,但是当从admin panel@TuteCNo完全不知道如何与rails admin集成时,会出现一些问题。要在rails管理员的内部检查的内容。这是我用来批准子节的内容:
scope:approved,->{where(:approved=>true)}
,它在我的子节模型中。然后,只有管理员在管理面板(rails admin gem)内选中approved框时,才会显示它。此外,子节嵌套在项目中。让我玩玩你给我的东西。我想这可能有用。谢谢大家!@Andrewcpkelley@Kathan让我知道它是否有效。我添加了一个检查,以查看approved属性是否已从false更改为true。