いくつかの一般的なフォーム機能のために独自のエンジンを構築している私のRailsアプリケーションでは、CanCanを使用して権限を与えています。ユーザーのエンジンコントローラの操作に自由にアクセスできないように、私のシステムでパーミッションをロックしたいと思います。これらのコントローラーは、ほとんどの場合、7つのRESTアクションを使用するだけなので、各コントローラーの上部にCanCanのload_and_authorize_resource
を使用したいと思います。しかしCanCan:MainApp以外の名前空間でのload_and_authorize_resource
、私はこのような私のコード書くとき:
module MyEngine
class FormController < ApplicationController
load_and_authorize_resource
...
end
end
を、私はこのエラーを取得する:
uninitialized constant Form
私の推測では、load_and_authorize_resource
自動ローダは私のMainAppに名前空間に結び付けられているということで、別の名前空間で呼び出すことを認識していないため、MyEngine::Form.find(params[:id])
ではなくForm.find(params[:id])
のような呼び出しもあります。
この場合、どうすれば修正できますか? authorize!
はまだ正常に動作しているので大したことではないので、それぞれのアクションで個別に認可を定義することができますが、load_and_authorize_resource
メソッドを使用することができれば、よりきれいに感じられます。
[CanCanを使用して名前空間とネストされたコントローラを認証する](http://stackoverflow.com/questions/12334367/authorizing-namespaced-and-nested-controllers-using-cancan) –