J'ai une relation many-to-many comme celle-ci: Un utilisateur a beaucoup d'organisations grâce à des affiliations et vice-versa. J'utilise des organisations déclaratives et je veux seulement qu'un utilisateur édite une organisation particulière s'il est affilié et que l'attribut affiliationtype d'affiliation est une valeur particulière.if_attribute sur l'autorisation déclarative
Alors affiliations a 3 colonnes, user_id, organization_id et affiliationtype_id
que je peux faire:
o = Organization.find(:first)
o.affiliatons[0].user and get the user
maintenant je veux faire ceci:
has_permission_on [:organizations], :to => :edit do
if_attribute (...)
end
Ce if_attribute devrait voir si le l'utilisateur actuel est l'organisation.affiliation [?]. utilisateur et si l'organisation.affiliation [?]. affiliationtype_id = "3"
J'espère que c'est un problème de syntaxe ... J'ai vraiment besoin de fonctionner.
je peux trouver l'utilisateur et de valider le match. Mais j'ai besoin de trouver l'utilisateur ET de voir si l'affiliation a un type d'affiliation d'un certain ID. Je peux obtenir est user_id, mais comment puis-je voir le type d'affiliation de cet user_id? Je ne comprends pas ... –
Voir mon édition, je pense que cela peut aider. Il n'y a qu'un objet d'affiliation à un ou zéro qui croise les affinités Organization.affiliations et user.affiliations.with_type_3 (suggestion named_scope). – nanda
presque ... cela fonctionne sur la console me donne une seule valeur pour l'utilisateur: v.affiliations.type_admin mais le if_attribute: affiliations => {intersects_with user.affiliations.type_admin } jamais valide true –