2012-04-11 11 views
0

Ich habe Schwierigkeiten, die Dokumentation für die deklarative Autorisierung und verschachtelte if_attributes zu verstehen.Deklarative Autorisierung geschachtelt if_attribute

Modelle:

class Company < ActiveRecord::Base 
    has_many :users, :through => :division 
end 

class Division < ActiveRecord::Base 
    belongs_to :company 
    has_many :users 
end 

class User < ActiveRecord::Base 
    belongs_to :post 
end 

Meine Regel:

role :company_admin do 
includes :company_admin 
    has_permission_on :companies, :to => [:index, :show, :edit, :update] do 
    if_attribute :id => is { user.division.company.id } # This is the problem.... 
end 

In meiner Hierarchie, ich habe eine company_admin Rolle definiert, die erlaubt sein sollte, seine eigene Firma und alle Abteilungen und Benutzer zu bearbeiten. Es gibt eine andere Rolle über dem Firmenadministrator, die die Möglichkeit hat, & Firmen und alle Rollen unten zu bearbeiten.

Wo ich aufgelegt zu sein scheint, ist in der Regel oben aufgeführt (Ich weiß, dass das nicht korrekt ist, es ist nur Füllstoff für ein Beispiel). Ich muss feststellen, dass der aktuelle Benutzer nur seine eigene Firma bearbeiten kann, keine andere. Dies scheint ein verschachteltes if_attribute zu sein, aber ich kann die Beispiele verschachtelter if_attributes in der Dokumentation nicht verstehen.

Vielen Dank im Voraus für jede Hilfe!

Antwort

0

Die Auflösung benötigt kein verschachteltes if_attribute. Das Beispiel, das ich verwendet habe, war tatsächlich korrekt, es gab andere Berechtigungsfehler in meiner Datei authorization_rules.rb, die dieser Benutzer erbte, was die Verwirrung verursachte.

if_attribute :id => is { user.division.company.id } #This was the correct if_attribute