15

使用 rolify 时如何获取具有特定角色的所有用户?我尝试了以下方法,但没有帮助:

User.with_role :admin

我收到以下错误:

NoMethodError: undefined method `with_role' for #<Class:0x0000000743f9c0>

找不到任何方法来做到这一点。

4

5 回答 5

31

您可以使用带有 User 类的 with_role 方法来查找在 3.1.0 版本中具有角色的所有用户。

User.with_role :admin
于 2012-12-12T06:16:57.417 回答
9

我会为它的用户询问角色

admins = Role.find_by_name('admin').users

with_role 方法适用于特定的用户实例,而不是所有用户的类级别。如果你想实现它,你必须做这样的事情:

#not 100% on this code, haven't tested it, but you get the idea.
User < ActiveRecord::Base
  def self.with_role(role)
     my_role = Role.find_by_name(role)
     where(:role => my_role)
  end
end
于 2012-07-05T17:31:00.097 回答
1

您是否在模型中提到了资源化以将角色放在

class User < ActiveRecord::Base
  resourcify
end

有了这个,您可以使用 with_role 和 find_roles 类方法。

于 2012-07-05T17:34:44.217 回答
0

如果你需要一个额外的“哪里”

@courriers = User.where.not(latitude: nil, longitude:nil ).with_role :Courrier
于 2017-02-09T23:01:58.583 回答
0

如果您需要使用连接,请尝试以下操作:

User.with_role(:admin).joins(:other_table).(other_table:{some_field: true})
于 2018-09-12T21:45:04.603 回答