モデルと関連のないコントローラーについて、CanCanでどのように設定するのかがわからなかったので、調べてみた。
結果としては、
- コントローラーでauthorize_resource class: falseに設定する。
- ability.rbでcanの第2引数にコントローラー名のシンボルを渡す。
という感じだった。
コントローラー側
class HogeController < ApplicationController authorize_resource class: false # 略 end
Ability側
class Ability include CanCan::Ability def initialize(user) unless user.nil? case user.role.code when "manager" can :manage, :all else can :manage, :hoge # コントローラー名のシンボルを記述 end else cannot :manage, :all end end end
なんか空のモデルを作ってる回答例とかもあったけれど、こっちのほうがスマートですわ。