首页 文章

如何使用cancan和devise添加角色rolify?

提问于
浏览
5

我知道有很多关于这个问题的问题,但没有人真正回答我正在寻找的问题 .

我正在尝试使用rolify来定义我在cancan中的角色,我能够通过rails console创建一个管理员角色并为新用户设置默认角色 .

我的问题是如何将一批角色设置为不同的值并将这些角色分配给某些用户?

如果您有一个很好的教程来解释这个过程也会有所帮助,那么截屏视频会更受欢迎 .

谢谢!

3 回答

  • 1

    你如何创建一批角色?

    您可以在db / seeds.rb文件中执行此操作,该文件在每次运行rake db:seed时执行

    [:admin, :author, :contact, :user].each do |role|
      Role.find_or_create_by_name({ name: role }, without_protection: true)
    end
    

    向某人添加角色就像这样

    @user.add_role :admin
    

    您可以检查用户是否具有某个角色

    @user.has_role? :admin
    

    并且,正如史蒂夫已经说过的那样,https://github.com/EppO/rolify文档应该让你一动不动!

  • 1

    我想你的问题比这更复杂,但简单的答案是你使用 add_role . 除了将角色分配给某些角色之外,您无需执行任何操作来创建角色 . 因此,如果Jane是全局管理员而Joe是peon,您可以使用:

    User.where(name: 'Joe').add_role :peon
    User.where(name: 'Jane').add_role :admin
    

    您还可以添加有关特定类或类实例的角色,但上述内容是您问题的最直接答案 . 随着教程的进行,github上的README非常不错 .

  • 10

    我想指出Danny的答案中使用的方法在Rails 4中对我不起作用

    我发现的工作是将它放入您的seeds.rb文件中

    [:admin, :author, :contact, :user].each do |role|
      Role.where({ name: role }, without_protection: true).first_or_create
    end
    

    这似乎是你使用Rails 4为我做的!这是基于这个答案above

相关问题