我是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
赋值运算符(例如<<
和=
)并将我的验证逻辑放在覆盖例程中来实现。
这是实现这一目标的最佳方法吗?
谢谢!
答案 0 :(得分:0)
我认为你可以在Person类中进行验证。它将对self.organiation.people中的其他人进行测试。我不知道是否会覆盖&lt;&lt;只有因为如果你决定创建像Person.new(:organization =&gt; some_org)之类的人你的&lt;&lt;覆盖不会被使用。如果验证存在于Person类中,无论您如何创建此人,它都会进行练习。