2010-03-30 2 views
0

У меня есть организация, которая has_many Принадлежность И миссия, которая HAS_ONE Организацияif_attribute синтаксис проблема на declarative_authorization

Так что я могу это сделать:

m = Mission.first 
m.organization.affiliations 

Пользователь также has_many принадлежности, так что я могу сделать:

u = User.first 
u.affiliations 

В declarative_authorization Я хочу, чтобы пользователь мог управлять миссией, если он связан с организацией промаха ион.

Я пытаюсь это:

has_permission_on :missions, :to => [:manage] do 
    if_attribute [:affiliations, {:mission => :organization} ] => intersects_with { 
    user.affiliations.type_admin 
    } 
end 

Но я получаю ошибку:

[:affiliations, {:mission=>:organization}] is not a symbol 

Что случилось с синтаксисом?

ответ

0

Я думаю, что это может работать для вас

has_permission_on :missions, :to => [:manage] do 
    if_attribute :organization => { :affiliations => intersects_with { user.affiliates.type_admin } } 
end 
+0

Маршрутизатор DSL составлен, но он не дал мне разрешение на управление миссии. В окне сервера я увидел, что миссия и организация были ноль: Разрешение отказано: новое не разрешено для # <Идентификатор пользователя: 2, имя: «Miguel», фамилия: «Alho», электронная почта: «blah @ blah .com ", день рождения:" 2010-07-05 20:24:00 ", crypted_password:" ... ", password_salt:" ... ", persistence_token:" ... ", perishable_token:" ... " , created_at: "2010-03-05 20:25:34", updated_at: "2010-03-30 15:45:36"> on # <Миссия id: nil, user_id: nil, organization_id: nil, name: nil , цели: nil, created_at: nil, updated_at: nil>. –

+0

Если я заставляю пропустить заклинание на организацию, я получаю ожидаемую ошибку и вижу, что присутствуют объекты миссии и организации ... Ошибка при вызове организации_ на # <Идентификатор миссии: 1, user_id: 1, organization_id: 1, name : «Имя миссии», (...) для проверки атрибута: неопределенный метод 'organization_ 'для # <Миссия: 0x1031329b0> –

+0

Я получаю это ... это новая миссия, поэтому к ней не привязан организатор. Это будет только когда миссия будет спасена. Но это не объясняет, почему по ошибке Missin и организация существует ... –

Смежные вопросы