Посмотрите на 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
Проверьте, имеет ли пользователь ANY указанной роли (ы)
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}
Я пытаюсь проверить: technician или: admin - это работает, но кажется, что должен быть более короткий путь: if current_user.has_role? : техник или current_user.has_role? : admin – Reddirt
Вы попробовали? Простой оператор 'или' является полностью опцией:' do_something, если user.has_role? (: Foo) || user.has_role? (: bar) ' – Andrew
Этот ответ не работает для меня. Был в 3.x сейчас в 5.x ... не работал ни в одном .. просто получайте ложь каждый раз. – Abram