У меня есть отношения «многие ко многим»: Пользователь имеет несколько организаций через филиалы и наоборот.if_attribute on declarative authorization
Я использую декларативные организации, и я только хочу, чтобы пользователь редактировал определенную организацию, если он является аффилированным лицом, а атрибут affiliationtype принадлежности является определенным значением.
Так принадлежности имеет 3 колонки, user_id, organization_id и affiliationtype_id
я могу сделать:
o = Organization.find(:first)
o.affiliatons[0].user and get the user
теперь я хочу, чтобы это сделать:
has_permission_on [:organizations], :to => :edit do
if_attribute (...)
end
Это if_attribute должны видеть, если текущий пользователь - организация.аффиляция [?]. пользователь и если организация.аффиляция [?]. affiliationtype_id = "3"
Надеюсь, это синтаксическая проблема ... Мне действительно нужно заставить эту работу работать.
можно найти пользователя и проверки соответствия. Но мне нужно найти пользователя и посмотреть, есть ли принадлежность к аффилированности определенного идентификатора. Я могу получить user_id, но как я вижу для affiliationtype этого user_id? Я не понимаю ... –
См. Мое редактирование, я думаю, это может помочь. Существует только один или нулевой объект аффилиации, который пересекается с Organization.affiliations и user.affiliations.with_type_3 (named_scope suggestion). – nanda
почти ... это работает на консоли не дает мне только одно значение для пользователя: v.affiliations.type_admin но if_attribute: принадлежность => intersects_with { user.affiliations.type_admin } Никогда validates true –