Rails + Rolify Gem:为 table 中的所有用户分配 :admin 角色

Rails + Rolify Gem: Assigning an :admin role to ALL users in a table

我正在使用 Rolify gem (https://github.com/RolifyCommunity/rolify) 为我的网络应用程序的用户分配角色。

我从文档中了解到我可以这样做来为单个用户记录分配角色:

user = User.find(1)
user.add_role :admin

这很好,以及我对正在创建的新帐户所做的事情。但是,如何将 :admin 角色分配给我的用户 table 中的所有用户?

我尝试在我的 rails 控制台上玩这个,但没有任何运气。

假设您有 users

#= select * from users;
 id |   name   |         created_at         |         updated_at
----+----------+----------------------------+----------------------------
  1 | Kristján | 2015-06-05 04:47:58.037205 | 2015-06-05 04:47:58.037205

roles

#= select * from roles;
 id | name  | resource_id | resource_type |         created_at         |         updated_at
----+-------+-------------+---------------+----------------------------+----------------------------
  1 | admin |           ∅ | ∅             | 2015-06-05 04:50:27.015613 | 2015-06-05 04:50:27.015613

并且您的加入 table 是 users_roles

#= \d users_roles
  Table "public.users_roles"
 Column  |  Type   | Modifiers
---------+---------+-----------
 user_id | integer |
 role_id | integer |

您可以使用

为每个用户插入一个 admin 角色
#= insert into users_roles select id, 1 from users;

或者,如果您更喜欢从 Rails 控制台执行此操作(如果有很多记录,请耐心等待):

User.find_each { |user| user.add_role :admin }