0

使用 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 中的代码考虑到我正在使用设计进行身份验证。所以我按照这个如何

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%>
4

1 回答 1

0

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

于 2014-03-05T20:14:55.760 回答