【问题标题】:How do you add roles rolify using cancan and devise?您如何使用 cancan 和设计添加角色 rolify?
【发布时间】:2014-01-22 15:46:32
【问题描述】:

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

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

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

如果您有一个很好的教程来解释这个过程,这也会有所帮助,首选截屏视频。

谢谢!

【问题讨论】:

    标签: ruby-on-rails devise cancan rolify


    【解决方案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 文档应该让您开始行动!

    【讨论】:

      【解决方案2】:

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

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

      您还可以添加与特定类或类实例相关的角色,但以上是对您的问题最直接的回答。 github 上的README 是相当不错的教程。

      【讨论】:

        【解决方案3】:

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

        我发现可以将其放入您的种子.rb 文件中

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

        这似乎可以满足您使用 Rails 4 对我的要求!这是基于这个答案above

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-09
          • 2014-05-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-21
          • 2013-07-10
          相关资源
          最近更新 更多