使用rolify查找具有特定角色的所有用户

问题描述 投票:14回答:5

使用rolify时,如何让所有用户具有特定角色?我尝试过以下但没有帮助:

User.with_role :admin

我收到以下错误:

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

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

ruby-on-rails ruby permissions gem roles
5个回答
25
投票

您可以将with_role方法与User类一起使用,以查找在3.1.0版中具有角色的所有用户。

User.with_role :admin

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

1
投票

您是否曾在模型中提到过resourcify以便放置角色

class User < ActiveRecord::Base
  resourcify
end

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


0
投票

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

@courriers = User.where.not(latitude: nil, longitude:nil ).with_role :Courrier

0
投票

如果您需要使用联接,请尝试以下方法:

User.with_role(:admin).joins(:other_table).(other_table:{some_field: true})
© www.soinside.com 2019 - 2024. All rights reserved.