дополнительные требования has_many - PullRequest
0 голосов
/ 06 января 2011

Назначение: заголовок: строка Разрешение: user_id: целое число, subject_class: строка, subject_id: целое число, действие: строка

Назначение has_many: permissions,: foreign_key =>: subject_id Но как мне убедиться, что он знает о требовании subject_class == self.class.to_s?

Обновление: используя: condition => {: subject_class => 'Назначение'}, как я могу убедиться, что я делаю права доступа. Новый также установлен: subject_class.

1 Ответ

0 голосов
/ 06 января 2011

Это то, что вы хотите использовать для полиморфных ассоциаций (http://wiki.rubyonrails.org/howtos/db-relationships/polymorphic)

В вашей модели назначений вы должны сделать следующее:

has_many :permissions, :as => :subject

А в своей модели разрешений выбудет делать это:

belongs_to :subject, :polymorphic => true

Однако вам нужно будет переименовать поле subject_class в subject_type, чтобы это работало неявно. Когда все это будет сделано, у вас будет все, о чем вы просилисвободный от Rails. Вам не нужно будет передавать: subject_type при создании нового разрешения. Вы можете создать такое разрешение, и: subject_type будет заполнен автоматически для вас:

assignment = Assignment.create(:title => "My Assignment")
permission = Permission.create(:subject => assignment, :action => "read", :user => current_user)

- or -

assignment.permission.create(:user => current_user, :action => "read")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...