我有一个带有active
列的模型,它是一个布尔类型。我想验证所有新增记录相对于company_id
的唯一性,以便我可以添加尽可能多的记录到表中,只要设置active
为false
且company_id
相同即可。每个company_id
只应该有一条active
记录。
我应该如何编写这个验证?我已经尝试过:
validates :company_id, :uniqueness => { :scope => :active }
但那似乎也会验证active
为false
的唯一组合(这样我就永远不能在表中拥有超过两个带有相同active
状态的company_id
,无论active
是什么)- 上述验证允许两条记录具有相同的company_id
,其中一条为active = false
,另一条为active = true
。一旦这两条记录被添加,验证将阻止其他所有内容。
然后我尝试添加以下内容:
scope :active, where(:active => true)
但这似乎并没有改变验证(与上面相同的问题)。
我该如何编写此验证以便我可以添加许多记录,其中company_id
相同,只要active
为false,并且每个company_id
只允许一个active = true
?