Ich versuche, cancan mit einer polymorphen Assoziation zu arbeiten, ich habe durch die Dokumente und Wiki gelesen und bin nicht in der Lage, es zu arbeiten...
Ich habe die folgenden Modelle:
class User < ActiveRecord::Base
has_many :areas, :as => :owner, :dependent => :destroy
end
class Account < ActiveRecord::Base
has_many :areas, :as => :owner, :dependent => :destroy
end
class Area < ActiveRecord::Base
belongs_to :owner, :polymorphic => true
end
und im Controller:
class AreasController < ApplicationController
load_resource :user, :instance_name => :owner
load_resource :account, :instance_name => :owner
load_and_authorize_resource :area, :through => :owner
before_filter :authorize_parent
respond_to :html
def authorize_parent
authorize! :manage, @owner
end
def index
end
def show
@events = @area.events.page(params[:page]).per(5)
respond_with @area
end
def new
respond_with @area
end
def create
@area = @owner.areas.new(params[:area])
if @area.save
flash[:notice] = "Your new area has been created..."
end
respond_with @area
end
end
und die folgenden Fähigkeiten:
can :manage, Area, :owner => { :memberships => { :user => { :id => user.id } } } # Accounts through Membership
can :manage, Area, :owner => { :id => user.id } # User
Die Aktionen "Neu" und "Erstellen" funktionieren sowohl für "user_areas" als auch für "account_areas", aber wenn ich versuche, die Aktion "index" für "areas" aufzurufen, erhalte ich den folgenden Fehler:
NameError in AreasController#index
uninitialized constant Owner
Irgendwelche Ideen? Vielen Dank