cancancanでモデル名に紐づかない制御をする方法
はじめに
権限制御のgemとして、cancancanがあると思います。
基本的な使い方はいろいろなところで記事になっていますが、「コントローラ名通りのモデルがないとき」の権限制御方法について記載します。
例
コントローラで次のように記載
class ProfilesController
authorize_resource class: :profile # ここではコントローラ名と同じprofileにしていますが、コントローラと名前を揃える必要もないです
def new
...
end
def edit
...
end
end
シンボルの形で描くことで、モデルがなくても権限管理することができます。
あとは通常の使い方と同じで、abilityクラスで定義していきます。
class Ability
include CanCan::Ability
def initialize(user)
if user.admin? # もしユーザーがadminなら全ての権限を付与
can :manage, :profile
elsif user.company? # もしユーザーがcompanyなら閲覧のみ可能
can :read, :profile
else # いずれでもなければ全てのアクションを不許可
cannot :manage, :profile
end
end
end
参考
基本的な使い方は以下などを参考にすると良いと思います。
Rails|CanCanCanの使い方解説
Author And Source
この問題について(cancancanでモデル名に紐づかない制御をする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/m-ito27/items/784f22bec151cc2f1e28著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .