我有一个 Company
和 Archive
模型,它们具有相同的表结构。两个模型都有一个 validates :name, :uniqueness => true
验证。
在 company.rb 文件中,我在设置自定义验证时遇到了问题,当我将记录添加到 Company
数据库时,它还会检查 Archive
模型(因此,如果 Archive 模型中已存在具有该名称的记录,则不会将其添加到 Company
表中)。
我假设这是可行的,但我在实现时遇到了问题,有人可以帮忙吗?
最佳答案
公司.rb
验证:name,唯一性:true
验证:unique_name
def unique_name
self.errors.add(:name, 'is already taken') if Archive.where(name: self.name).exists?
end
重要的是要记住,这种代码级别的 Unique 约束可能无法在并行请求之间的竞争条件下工作,除非这可以在数据库级别完成。
关于ruby-on-rails - 验证两个表的唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21012826/