在Rails 2中.x您可以使用验证来确保具有唯一的组合值,如下所示:

validates_uniqueness_of :husband, :scope => :wife

在相应的迁移中,它可能如下所示:

add_index :family, [:husband, :wife], :unique => true

这将确保丈夫/妻子组合在数据库中是唯一的.现在,在Rails 3中,验证语法发生了变化,scope属性似乎消失了.现在看来:

validates :husband, :presence => true

知道如何在Rails 3中实现组合验证吗?铁轨2.x验证在Rails 3中仍然有效,所以我仍然可以使用第一个示例,但它看起来太"旧",有更好的方法吗?

推荐答案

请容忍我.ActiveModel中validates方法的工作方式是寻找验证器.

:presence => true查找PresenceValidator并将选项:true传递给验证器的初始值设定项.

我想你想要

validates :husband, :presence => true, :uniqueness => {:scope => :wife}

(唯一性验证器实际上是ActiveRecord的一部分,而不是ActiveModel.开发人员如何设置它真的很有趣.它非常优雅.)

Ruby-on-rails相关问答推荐

我try 使用Ruby on Rails7创建一个Carbon 足迹计算器.但我无法保存和用户S对象

如何将POST-CSSS-IMPORT与TRANWIND-RACKS和IMPORT映射一起使用

Rails Heroku部署:预编译assets资源 失败.SassC::语法错误

Ruby - 如何删除目录中早于 X 天的所有文件?

如何断言 Ruby 单元测试中的错误消息?

在 Rails 中进行 Http 基本身份验证

Rails 4 中的 null_session 和 reset_session 有什么区别?

Rails:用于创建固定长度 char(12) 列的迁移

如何在 Ruby 字符串中返回最后一个斜杠(/)之后的所有内容

如何在rails中发回js.haml

在 Rails 中将 DateTime 字符串转换为 UTC

Rails - 生产模式下的错误

如何让 ActiveAdmin 使用强参数?

按周/月/等和 ActiveRecord 分组?

使用 rvm 更新 ruby​​ 版本后收到警告消息Path set to RVM

Rails SQL 正则表达式

Ruby on Rails i18n - 想要在模型中翻译自定义消息

停止 Rails 为视图和助手生成规范测试?

如何为 Rails 迁移定义布尔字段

从模型中获取验证