3

roify を使用して複数のロールをテストしたいと思います。

私はこれを試しましたが、うまくいきませんでした:

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

助けてくれてありがとう!

更新1

:technician または :admin をテストしようとしています - これは機能しますが、もっと短い方法があるようです:

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

2 に答える 2

7

のようなものをテストすることをお勧めcurrent_user.has_any_role? :technician, :adminします。期待しているブール値が返されるはずです:)

于 2014-05-07T18:24:38.160 に答える
4

Rolifyのドキュメントを見てください:

複数の役割のチェック ユーザーが指定されたすべての役割を持っているかどうかを確認します

  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}
于 2013-04-19T18:47:04.063 に答える