0

すでに回答済みの同様の質問がありますが、新しい CanCan 2.0 バージョンをカバーしていないため、少し古くなっているようです。特定のフィールド (この場合は:active:limited) がユーザーによって更新されないようにし、管理者だけが編集できるようにする必要があります。

# ability.rb
if user.persisted?
  cannot :update, :users, [:active, :limited]

  elsif user.admin?
    can :access, :all
  end

ただし、このコードは、ユーザーがこれらのフィールドを編集できないようにするものではありません。

enable_authorizationまた、新しいルートclass RegistrationsController < Devise::RegistrationsControllerとルートに追加しましたdevise_for :users, path: 'users', controller: 'registrations'が、それでもうまくいかないようです。

4

1 に答える 1

-1

:users? ではなく User であるべきだと思います。

# ability.rb ... cannot :update, User, [:active, :limited]

于 2012-09-05T15:09:58.897 に答える