验证跨唯一两个表(Validating Uniqueness Across Two Tables)

2019-10-19 04:42发布

我有一个CompanyArchive具有相同的表结构模型。 这两种型号都具有validates :name, :uniqueness => true验证。

在company.rb文件我无法建立一个自定义的验证那里,当我添加一条记录到Company数据库,它还会检查Archive模式(这样,如果与该名称的归档模式的记录已经然后它赢得存在“T被加入到Company表)。

我假设这是可以做到的,但我在实施,任何人都可以帮助麻烦?

Answer 1:

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

重要的是要记住,虽然这样的代码级别唯一约束可以在比赛条件下的并行请求中不起作用,除非在某种程度上这可以在数据库级别做的是非常重要的。



文章来源: Validating Uniqueness Across Two Tables