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

5

我知道这个主题有很多问题,但没有一个真正回答了我的问题。

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

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

如果您有一个好的教程可以解释这个过程,那将非常有帮助,最好是视频教程。

谢谢!

3个回答

9

如何创建一批角色?

在你的 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

正如Steve已经说过的那样,https://github.com/EppO/rolify的文档应该可以帮助你入门!


1
我想指出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


1
我想你的问题比这更复杂,但简单的答案是你可以使用add_role。你不需要做任何事情来创建角色,只需将它们分配给某些内容即可。因此,如果Jane在全局范围内是管理员,而Joe是一个小兵,你可以这样使用:
User.where(name: 'Joe').add_role :peon
User.where(name: 'Jane').add_role :admin

你也可以针对特定类或实例添加角色,但上述是回答你问题最直接的方式。Github上的README作为教程还是相当不错的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接