ruby-on-rails - 验证两个表的唯一性

标签 ruby-on-rails validation model ruby-on-rails-4

我有一个 CompanyArchive 模型,它们具有相同的表结构。两个模型都有一个 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/

相关文章:

android - 对于使用移动应用程序的 Sorcery gem,我应该使用什么身份验证方法?

sql - 对包含变量进行分页

Django Rest Framework - 如何为所有 ModelSerializer 字段创建自定义错误消息?

java - 为什么 Spring Web/MVC 不将我的模型属性添加到我的重定向 View 的 URL 中?

ruby-on-rails - 确定 Rails after_save 回调中更改了哪些属性?

java - 为什么在通过列表模型更新内容后有时会得到空白的 JList?

ruby-on-rails - 使用 Google 服务帐户创建的新日历事件不会向与会者发送邀请电子邮件

ruby-on-rails - 具有来自同一个表的多个 id 的 Rails 关系表

javascript - 如何在 JavaScript 中验证此正则表达式?

java - 如何在 Spring 中排除/禁止 validator 中的字段