ich CanCan für Berechtigungen in meiner Rails-Anwendung bin mit, in dem ich meinen eigenen Motor für einige generische Form Funktionalität aufgebaut habe. Ich möchte Berechtigungen in meinem System sperren, damit Benutzer nicht frei auf die Aktionen meiner Engine Controller zugreifen können. Diese Controller verwenden größtenteils nur die 7 REST-Aktionen, deshalb möchte ich CanCans load_and_authorize_resource
oben auf jedem Controller verwenden.CanCan: load_and_authorize_resource in anderem Namensraum als die MainApp
Allerdings, wenn ich meinen Code wie folgt schreiben:
module MyEngine
class FormController < ApplicationController
load_and_authorize_resource
...
end
end
ich diesen Fehler:
uninitialized constant Form
Meine Vermutung ist, dass der automatische Lader in load_and_authorize_resource
ist gebunden an meinem MainApp Namespace und nicht erkennt, dass ich es in einem anderen Namespace nenne, und so auch ein Aufruf wie Form.find(params[:id])
statt MyEngine::Form.find(params[:id])
.
Wenn dies der Fall ist, wie kann ich dieses Problem beheben? Es ist keine große Sache, weil authorize!
noch richtig funktioniert, so kann ich die Berechtigung in jeder Aktion einzeln definieren, aber es würde das Gefühl, viel sauberer, wenn ich in der Lage war, die load_and_authorize_resource
Methode zu verwenden.
mögliches Duplikat von [Autorisieren von Namespaced- und Nested-Controllern mit CanCan] (http://stackoverflow.com/questions/12334367/authorizing-namespaced-and-nested-controllers-using-cancan) –