所以我刚刚安装了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\"}>