Rails:如何validation只有一对多关系的多边记录被标记为主要记录
我在我的Rails应用程序中设置了一对多关系: Person
有很多Addresses
。 我在我的Addresses
表中添加了一个名为is_primary
。 如何通过validation强制执行只有一个地址将is_primary
设置为true?
基本上我想说:对于所有具有is_primary
为Person
和addressable_id
为X
Addresses
行,只有一个可以将is_primary
设置为true
。 如果不是这种情况,请拒绝保存并抛出表单validation错误。
在Person
和Address
之间添加新的一对一关联不是更好吗? 这样,您将确保只有一个主地址,而无需进行任何validation和error handling。
class Person belongs_to :primary_address, class_name: 'Address' has_many :addresses end class Address belongs_to :person def is_primary? self.person.primary_address == self end end