はじめに
権限制御の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の使い方解説