Railsのポートフォリを作成する時にcancancanというgemを使いましたが、参考になる記事が少なかったので備忘録をかねて記録を残します。
##初期設定(Gemのインストールとモデル作成)
初期設定(Gemのインストールとモデル作成)
gem 'cancancan' #Gemfileに設定する。
bundle install #Gemをインストールする。
rails g cancan:ability #ターミナルに打ち込んでモデルを作成する。
すると
app/modelsability.rbが作成されます。
##権限の定義方法
本家のサイトにサンプル例が載っています。
権限は下記の5つがあり、主にCRUD関係の権限です。
基本の権限の理解
read: フロントのビュー画面表示
create: データの作成
uodate: データの更新
destroy: データの削除
manage: 全ての権限
書き方のイメージ
can 権限, モデル名
#または
cannnot 権限, モデル名
でモデルに権限を与えていきます。詳しくは下記を参考にしてください。
権限の定義の方法サンプル例
class Ability
include CanCan::Ability
def initialize(user)
can :read, :all # ログインしていないユーザーも含め全てのユーザーへの権限を与える
if user.present? # ログインしているユーザーに対して権限を与えるための条件分岐
can :manage, Post, user_id: user.id
if user.admin? # adminに対して権限を与えるための条件分岐
can :manage, :all
end
end
end
end
できる権利
できない権利
それぞれを上に重ねていって権限を与えていくイメージです。
下の階層に行けば行くほど、多くの権限が与えられる書き方になります。
となると、adminを全ての権限を持つので1番下にくる流れになることがわかります。
基本は、canで権限を与える。
managae権限や全ての権限対象allで与えすぎてしまって分はcannnotでマイナスするイメージです。
最後に適応された権限が有効になるようです。