2013-10-24 7 views
0

Я пытаюсь применить правило к способности классаAccess атрибуты, связанные модели в модели

Каждый пользователь в моем приложении (кроме админов, но мы будем игнорировать это) belongs_to практики, определенные в другой модели ,

Практика может быть приостановлена ​​из-за доступа по той или иной причине.

Я хочу сказать, что в моей способности модели

if user.practice.suspended? 
can :read, Client, :practice_id => user.practice_id 
else 
can :manage, CLient, :practice_id => user.practice_id 
etc.... 

Но по какой-то причине, в то время как я могу использовать

user.practice_id 

в модели способности я не могу использовать

user.practice.<attribute> 

Любые идеи для пути вокруг этого?

модели/user.rb

belongs_to :practice 

модели/practice.rb

Практика имеет много пользователей. Единственный пользователь, который не будет иметь практику те с ролью: администратор

has_many :users 
+2

Что вы подразумеваете под * Я не могу использовать *? Вы получили сообщение об ошибке? Какая именно? – depa

+0

Вы могли бы отправить код с ваших моделей? –

+0

вставьте, как вы строите отношения между пользователем и практикой, если вы не можете вызвать user.practice.attribute, что-то говорит мне, что вы неправильно установили отношения. – rmagnum2002

ответ

0

Я думаю, что у вас есть отношения в обратном направлении.

Должно быть, что «Пользователь has_many (или has_one) практика» и «Практика принадлежит пользователю». Это означало бы, что foreign_key (в данном случае user_id) фактически находится в таблице практики вместо таблицы пользователя.

Попробуйте это:

User.rb

has_one :practice 

Practice.rb

belongs_to :user 

Создать миграцию добавить user_id на практике

add_column :practices, :user_id, :integer 

Тогда вы можете позвонить практика из user like so:

user.practice.x 
+0

В каждой практике (компании) будет много пользователей. Итак, у каждого пользователя есть практика_ид, означающая, к какой практике они принадлежат. У меня есть правильный путь? – Carpela

+0

хорошо, я полагаю, это имеет смысл ... могут ли пользователи относиться к нескольким практикам? – derekyau

+0

№ Представьте себе практикующую компанию, где все пользователи этой практики работают над клиентами этой компании. Таким образом, любой пользователь является сотрудником этой практики и, следовательно, имеет только 1 практику. – Carpela

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