いくつかの汎用フォーム機能用に独自のエンジンを構築したRailsアプリケーションのアクセス許可にCanCanを使用しています。ユーザーがエンジンコントローラーのアクションに自由にアクセスできないように、システムのアクセス許可をロックダウンしたいと思います。load_and_authorize_resource
これらのコントローラーは、ほとんどの場合、7つのRESTアクションを使用するだけなので、各コントローラーの上部にあるCanCanを使用したいと思います。
ただし、次のようにコードを書くと、次のようになります。
module MyEngine
class FormController < ApplicationController
load_and_authorize_resource
...
end
end
このエラーが発生します:
uninitialized constant Form
私の推測では、の自動ローダーはload_and_authorize_resource
私のMainApp名前空間に関連付けられており、別の名前空間で呼び出していることを認識しないため、Form.find(params[:id])
ではなくのような呼び出しを行いMyEngine::Form.find(params[:id])
ます。
この場合、どうすればこれを修正できますか?それでも適切に機能するため、大したことではないので、各アクションで承認を個別に定義できますが、このメソッドauthorize!
を使用できれば、はるかにクリーンに感じるでしょう。load_and_authorize_resource