我有一个Company
和Archive
具有相同的表结构模型.两种型号都有validates :name, :uniqueness => true
验证.
在company.rb文件中,我在设置自定义验证时遇到问题,当我向Company
数据库添加记录时,它还会检查Archive
模型(这样,如果存档模型中具有该名称的记录已存在,那么它将不会被添加到Company
表中).
我假设这是可能的,但是我在实施方面遇到了麻烦,有人可以帮忙吗?
company.rb
validates :name, uniqueness: true
validate :unique_name
def unique_name self.errors.add(:name, 'is already taken') if Archive.where(name: self.name).exists? end
重要的是要记住,虽然这样的代码级别唯一约束可能在并行请求之间的竞争条件下不起作用,除非以某种方式这可以在数据库级别完成.