5

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

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

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

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

谢谢!

4

3 回答 3

10

如何创建一批角色?

您可以在您的 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文档应该让您开始行动!

于 2014-01-05T09:11:43.970 回答
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 对我的要求!这是基于上面的这个答案

于 2015-03-30T18:30:27.913 回答
1

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

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

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

于 2014-01-05T04:46:50.807 回答