Rails (cancan などを使用) では、ログインしているユーザーがデータベース レコードの一部を編集できるようにしたいのですが、すべてを編集できるようにする必要はありません。
データベースは次のようになります。
User: name, password, team_id, role_id, notes
Role: name
Team: name
たとえば、current_user
(ログインしているもの)がの役割を持っているuser
場合、私ができるようにしたいのは、自分のパスワードを変更することだけです。彼らが自分の名前を変更したり、チームを変更したりできるようにしたくありません。マネージャーが自分自身や他のユーザーに関するメモを追加できるようにしたいが、他のマネージャーは追加できないようにしたい。
認証を行うために、次の変更された形式を使用しています。
- http://railscasts.com/episodes/250-authentication-from-scratch
- http://railscasts.com/episodes/192-authorization-with-cancan
に次のようなものを追加することを考えていましたability.rb
。
can :edit, User, :id => user.id
私の質問は次のとおりです。
- アクセスできるフィールドを制限するにはどうすればよいですか?
- これはどこに行けばいいのか、モデルではなくコントローラーで考えていました。(現在のユーザー権限を扱うものはモデルレイヤーにあるべきではないと思うので)