9

私がやっている:

can :manage, :all if user.role == 'admin'

can :approve, Anuncio do |anuncio|
  anuncio.try(:aprovado) == false
end

:manage :all がそれをオーバーライドするため、私の 2 番目の方法は機能しません。承認以外のすべてを管理できると宣言する方法はありますか? 内部で承認するだけです

can :approve, Anuncio do |anuncio|
  user.role == 'admin' && anuncio.try(:aprovado) == false
end

より良い解決策は何ですか?

4

1 に答える 1

18

cancan wikiを調べて、別の方法で試してみてください。試す:

can :manage, :all if user.role == 'admin'

cannot :approve, Anuncio do |anuncio|
  anuncio.try(:aprovado)
end
于 2013-05-10T17:45:15.730 に答える