Rails 4:使用Devise基本使用Merit gem

时间:2014-03-04 16:25:36

标签: badge merit-gem

使用优点宝石,我想为我应用的前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%>

1 个答案:

答案 0 :(得分:0)

model_name: 'User'添加到您的规则中。如果未在对象(注册!=用户)之后命名控制器名称,则会发生这种情况。