как применять правила включения в ассоциациях ActiveRecord - PullRequest
0 голосов
/ 18 августа 2011

Я новичок в rails, и у меня есть вопрос о том, как наилучшим образом обеспечить выполнение пользовательских правил для ассоциаций моих моделей.

Например, предположим, что у меня есть:

class Person < ActiveRecord::Base
  belongs_to :organization
end

class Organization < ActiveRecord::Base
  has_many :people
end

и сейчасПредположим, что я хочу разрешить выполнение команды Organization.people << Person.new(...) только в том случае, если новый объект Person совместим с другими people, которые ранее были добавлены в Organization.Это повлечет за собой проверку правильности всех существующих элементов Organization.people и принятие решения о том, можно ли добавить новый Person или нет.

Мне кажется, что я могу сделать это, переопределив все Organization.people операторы присваивания (такие как << и =) и помещение моей логики проверки в процедуру переопределения.

Это лучший способ сделать это?

Спасибо!

1 Ответ

0 голосов
/ 18 августа 2011

Я думаю, вы могли бы поставить проверку в классе Person.Это будет испытание против других людей в self.organiation.people.Я не знаю, смогу ли я переопределить << on, имеет много связей только потому, что если вы решите создать такого человека, как Person.new (: organization => some_org), ваш << override не будет использованЕсли проверка выполняется в классе Person, она будет выполнять упражнения независимо от того, как вы ее создадите. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...