Ruby on Rails - Merit Gem grant_on未被触发

时间:2015-06-23 00:43:30

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

所以我刚刚安装了merit gem并且一直在使用它在我的应用程序中实现徽章。我将config/initializers/merit.rb文件中的徽章定义为:

badge_id = 0
[{
  id: (badge_id = badge_id + 1),
  name: 'badge-one',
  custom_fields: { test_id: 'sample_id' }
}].each do |attrs|
  Merit::Badge.create! attrs
end

创建用户时,此徽章将奖励给用户。用户是在user_controller.rb方法中的create内创建的:

grant_on 'user#create', badge_id: 1, badge: 'badge-one', to: @user

出于某种原因,当创建新用户时,徽章永远不会得到奖励。当我输入Merit::Badge.find(1)时,我看到徽章确实被定义了。但是,当我在我的控制台中键入User.first.badges时,它返回一个空数组。为什么徽章在用户注册时不会被奖励给用户?如果您需要任何其他信息来帮助解决此问题,请与我们联系。

修改以提供更多信息

这是我在控制台内Merit::Badge.find(1).inspect运行时得到的结果:

#<Merit::Badge id: 1, name: \"badge-one\", level: nil, description: nil, custom_fields: {:test_id=>\"sample_id\"}>

0 个答案:

没有答案