Rails Rolify如何测试多个角色

时间:2013-04-19 18:38:58

标签: ruby-on-rails rolify

我想使用rolify测试多个角色。

我尝试过这个并没有用:

<% if current_user.has_role? [:technician, :admin] %>

感谢您的帮助!

UPDATE1

我正在尝试测试:技术人员或:管理员 - 这可行,但似乎应该有一个更短的方式:

if current_user.has_role? :technician or current_user.has_role? :admin

2 个答案:

答案 0 :(得分:6)

我建议您测试类似current_user.has_any_role? :technician, :admin的内容,它应该返回您期望的布尔值:)

答案 1 :(得分:3)

查看Rolify docs

多角色检查 检查用户是否具有所有指定的角色

  user = User.find(1)
  user.add_role :admin # sets a global role
  user.add_role :moderator, Forum.first # sets a role scoped to a resource instance
  user.add_role :visitor, Forum # sets a role scoped to a resource class
  user.has_all_roles? :admin, { :name => :moderator, :resource => Forum.first }, { :name => :visitor, :resource => Forum }
  => true
  user.has_all_roles? :admin, { :name => :moderator, :resource => Forum.last }
  => false
  user.has_all_roles? :god, { :name => :visitor, :resource => Forum }
  => false

检查用户是否具有任何指定的角色

  user = User.find(1)
  user.add_role :admin # sets a global role
  user.add_role :moderator, Forum.first # sets a role scoped to a resource
  user.add_role :visitor, Forum # set a role scoped to a resource class
  user.has_any_role? :admin, { :name => :moderator, :resource => Forum.first }, { :name => :visitor, :resource => Forum }
  => true
  user.has_any_role? :admin, { :name => :moderator, :resource => Forum.last }
  => true
  user.has_any_role? :god, { :name => :visitor, :resource => Forum }
  => true

所以看起来你想要使用它:

user.has_all_roles? :technician, {:name => :admin}