使用优点宝石,我想为我应用的前100位用户创建一个Pioneer徽章。
merit.rb中的代码
Merit::Badge.create!(
id: 1,
name: 'Pioneer',
description: "Belongs to the 100 first users of the site",
image: '/images/pioneer.png'
)
badges_rules.rb中的代码考虑到我正在使用设计进行身份验证。所以我跟着this how to。
grant_on 'users/registrations#create', badge: 'Pioneer', model_name: 'User' do |user|
user.id < 101
end
它没有创建任何徽章。有趣的是,注意到这个其他徽章运作良好:
grant_on 'users/registrations#create', badge: 'Inscription', model_name: 'User'
似乎Devise正在弄乱用户对象。我确实覆盖了注册控制器,就像Howto所说的那样。当我以一种简单的方式调用这个控制器时,就像这个“铭文”徽章一样,一切都还可以。
但是当我需要对用户的id设置一个条件时,没有任何反应。
有关信息,这是来自用户展示视图的代码,其中显示了徽章(这是有效的)。
<% @user.badges.first(5).each do |b| %>
<%= image_tag(b.image) %>
<%= b.name %>
<%end%>
答案 0 :(得分:0)
将model_name: 'User'
添加到您的规则中。如果未在对象(注册!=用户)之后命名控制器名称,则会发生这种情况。