Deklarative Genehmigung und die IF_ATTRIBUTE funktionieren nicht
Frage
Ich hatte fast die gleichen Probleme wie Victor Martin (Sie können die hier gestellten Fragen sehen).
Ich habe eine deklarative Autorisierung für fast alles, was nicht die Verwendung von Bedingungen beinhaltet. Z.B
has_permission_on :users, :to => [:edit, :update, :destroy] do
if_attribute :user => is { current_user }
end
Gibt es gemeinsame Fallstricke mit deklarativer Genehmigung? Ich verwende Authlogic und ich bin verdächtig, dass die Methode 'Current_User' im Anwendungscontroller die Quelle des Problems sein könnte.
Lösung
Beachten Sie, dass Sie in Ihren Controllern "filter_access_to" verwenden, dass Sie sicherstellen müssen, dass Sie ": Attribute_Check => true" haben. Ohne sie tun die bedingten "IF_ATTRIBUTE" -DEKENATIONEN nichts.
Weitere Details dazu In den deklarativen Autorisierungsdokumenten
Andere Tipps
Sie müssen dies zu Ihrem ApplicationController hinzufügen, wenn Sie es noch nicht getan haben:
before_filter :set_current_user
protected
def set_current_user
Authorization.current_user = current_user
end
Dann würden Ihre Regeln so aussehen:
has_permission_on :users, :to => [:edit, :update, :destroy] do
if_attribute :user => is { user }
end
Soweit ich weiß, nennt die deklarative_authorisierung keine Methoden im Crontroller und weiß nicht was current_user
bedeutet in Ihrem Beispiel, aber es gibt Ihnen eine Instanz von Authorization.current_user
genannt user
das Sie in Ihrem verwenden können authorization_rules.rb
Datei.