Rails3 - CanCan - initialisierten Konstanten Fähigkeit::Seite
Ich habe gerade cancan 1.5.0 auf meinem rails 3 app hier ist meine Fähigkeit, Datei -
def initialize(user)
user ||= User.new
if user.role == 'Admin'
can :manage, :all
end
if user.role == 'Standard'
can :manage, Library
can :manage, Page
else
can :manage, Page
can :manage, Library
end
Habe ich eine custom class (non-restful-Funktionen)
class PagesController < ApplicationController
authorize_resource :class => false
def home
end
end
Wie Sie sehen können, verwende ich die richtige Funktion für einen nicht erholsamen Klasse, aber ich bin noch immer dieser Fehler -
uninitialized constant Ability::Page
Hier ist der Anfang der stacktrace -
app/models/ability.rb:16:in `initialize'
cancan (1.5.0) lib/cancan/controller_additions.rb:327:in `new'
cancan (1.5.0) lib/cancan/controller_additions.rb:327:in `current_ability'
cancan (1.5.0) lib/cancan/controller_additions.rb:308:in `authorize!'
cancan (1.5.0) lib/cancan/controller_resource.rb:40:in `authorize_resource'
cancan (1.5.0) lib/cancan/controller_resource.rb:9:in `block in add_before_filter'
activesupport (3.0.3) lib/active_support/callbacks.rb:436:in ` _run__1386450187816505438__process_action__15559788756486462__callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:409:in `_run_process_action_callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:93:in `run_callbacks'
Dank, Alex
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den CanCan Dokumentation beschreibt die
can
Methode:So, das problem ist, dass Sie nicht über eine
Page
Klasse in Ihrem system für CanCan Zugriffsverwaltung.Beachten Sie, dass CanCan eingebaut haben: (Hervorhebung durch mich)
Also, wenn Sie darauf abzielen, die Kontrolle von abstrakten Konzepten, die keine Schienen Ressourcen, die mit Ihnen verbunden dann haben Sie wahrscheinlich eine harte Zeit mit CanCan
Nur ein Hinweis an jemanden, finden Sie diese nun auf...
Können Sie ermächtigen, alle non-restful-controller, abstrakte Klassen und Methoden..
Beispiel:
/app/models/role_ability.rb
:do_this und :on_this sind komplett beliebig, aber Sie müssen sich mit den autorisieren! params in der Steuerung wie so...
Nur daran erinnern, dass die Chancen sind Sie haben wahrscheinlich bereits einige Ressourcen-Autorisierung geschieht innerhalb der ApplicationController vielleicht so
so denken Sie daran, skip_authorize_resource in Ihrem non-restful/abstrakte controller
Nun ein admin kann :do_this, :on_this und zu ermächtigen schön. Sie würden wahrscheinlich wollen, um den Namen der Fähigkeit, ein bisschen mehr semantisch, wollte nur betonen die willkürliche-ness.
Dies ist alles mit Cancan 1.5, habe nicht versucht, auf etwas früher.
Vom https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers