0

私のability.rbファイルで、定義されたユーザーだけが何かをできるように設定するにはどうすればよいですか?

例:

def initialize(user)
    user ||= User.new #not logged in user
    if user.admin_user?
        can :manage, :all
    else
        #can't do anything. Cannot view, edit, or update.
    end
end

ありがとう!

4

2 に答える 2

1

CanCan を実際に使用したことはありませんが、ドキュメントを調べたところ、ユーザーが実行できないことを明示的に定義する必要はないと思います。

コントローラーで次のようなことができるはずです:

if cannot? :destroy, @project 
  # redirect the user or do something else to disallow access
end

cannot?アビリティが定義されているロールがユーザーに割り当てられていない場合は、true を返す必要があります。逆can?に false を返します。

于 2012-06-21T21:10:17.400 に答える
0

初期化関数で単純な条件セットを試すことができます。

# app/models/ability.rb
def initialize(user)
  if user && user.admin_user?
    # Abilities for registered admin users
    can :manage, :all
  elsif user
    # Abilities for registered users
    can :read, :all
  else
    # Abilities for no user
  end
end

initialize呼び出されると、user(認証ソリューションによっては)nilログインしていないユーザーが呼び出され、最後の分岐がトリガーされる可能性があります。

于 2012-06-21T21:17:50.697 に答える