0

I have application and engines (gems, Rails::Engine). CanCan used for authorization and I want to use it at engines. Engines isolated with namespace, but for example:

module MyEngine
  class ApplicationController < ::ApplicationController
  end
end

So, I can use load_and_authorize_resource at controllers (must specify model class name) and 'can' helper also. All abilities I must write to Ability at main application (models from engines must be namespaced). It is not nice way. I want specify abilities for engine at this engine, but without create new ability object. How can I do this? Any idea?

4

1 に答える 1

2

あまりきれいではありませんでしたが、現在書いているRailsアプリケーションで同様のことを行いました. このアプリケーション内に FormX と呼ばれる独自のエンジンを作成しました。これは一種のフォーム CMS エンジンです。私は、ユーザーがフォームへの特定の応答のみを編集できるようにし、一部のユーザーだけがフォームを作成できるようにしたいと考えました。

Form名前空間にモデルがあったため、構文を使用Formxして MainAppability.rbファイルで機能を定義できましたFormx::Form

元。

can :manage, Formx::Form

次に、エンジンの名前空間内で作業するauthorize!ことができなかったため、コントローラーで各アクションに手動で呼び出しを配置する必要がありました。load_and_authorize_resource

于 2012-08-22T00:56:01.270 に答える