Ich habe eine Viele-zu-Viele-Beziehung wie folgt: Ein Benutzer has_many Organisationen durch Zugehörigkeiten und umgekehrt.if_attribute auf deklarative Autorisierung
Ich verwende deklarative Organisationen und ich möchte nur einen Benutzer eine bestimmte Organisation bearbeiten, wenn er angegliedert ist und das Zugehörigkeitstyp-Attribut der Zugehörigkeit einen bestimmten Wert ist.
So hat Zugehörigkeiten 3 Spalten, user_id, organization_id und affiliationtype_id
kann ich tun:
o = Organization.find(:first)
o.affiliatons[0].user and get the user
jetzt wünsche ich, dies zu tun:
has_permission_on [:organizations], :to => :edit do
if_attribute (...)
end
Das if_attribute sehen sollte, wenn die derzeitiger Benutzer ist die Organisation.Vereinigung [?]. Benutzer und wenn die Organisation.Aganzierung [?]. Zugehörigkeitstyp_ID = "3"
Ich hoffe, das ist Syntaxproblem ... Ich muss wirklich funktionieren.
ich den Benutzer finden und das Spiel zu validieren. Aber ich muss den Benutzer finden und sehen, ob Zugehörigkeit einen Zugehörigkeitstyp einer bestimmten ID hat. Ich kann bekommen, ist user_id, aber wie sehe ich für den Affiliationtyp dieser user_id? Ich verstehe es nicht ... –
Sehen Sie meine Bearbeitung, ich denke, das kann helfen. Es gibt nur ein oder kein Zugehörigkeitsobjekt, das sich mit Organization.affiliations und user.affiliations.with_type_3 (named_scope-Vorschlag) überschneidet. – nanda
fast ... funktioniert dies auf der Konsole mir nur einen Wert für den Benutzer geben: v.affiliations.type_admin aber die if_attribute: Zugehörigkeiten => intersects_with { user.affiliations.type_admin } nie validiert true –