CanCanでモデルのないコントローラーで権限チェックを行う

ユーザー権限を見ながら、アクセスチェックをしようという目的で、DeviseとCanCanを使ってみています。まだよくわかってないんですが、これは便利そうです。
CanCanでは基本的にモデルのCRUDのURLをチェックする感じのチェックが行われます。

class HogesController < ApplicationController
  load_and_authorize_resource
  ...(略)
end

しかし、それに合わないようなコントローラーもあります。
各マスターデータ一覧を表示するようなやつです。

class MasterController < ApplicationController
  ...(略)
end

ここでload_and_authorize_resourceを指定すると、対象のMasterというモデルがないのでエラーで落ちます。
対象のモデルが無い場合はどうするのかを調べたところ、本家に書いてありました。
https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers

class MasterController < ApplicationController
  authorize_resource :class => false
  ...(略)
end

リソースがないんだからリソースclassをfalseに指定すりゃいいのね。なるほど。


カテゴリー Ruby, Ruby on Rails | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です