ruby-on-rails - rails 3 : Validate combined values

标签 ruby-on-rails ruby-on-rails-3 validation validates-uniqueness-of database-integrity

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

validates_uniqueness_of :husband, :scope => :wife

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

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

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

validates :husband, :presence => true

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

最佳答案

请耐心等待。 ActiveModel 中的 validates 方法的工作方式是寻找 Validator。

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

我想你想要

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

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

关于ruby-on-rails - rails 3 : Validate combined values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2533502/

相关文章:

ruby-on-rails - 在 Rails 4 中检测用户代理 - 读取 HTTP header

javascript - Rails 5 - 以 json 格式将数据从 Controller 发送到 javascript

php - 如何在 codeigniter form_validation 类中允许空值或数值?

ruby-on-rails - 更改事件模型序列化程序默认适配器

ruby-on-rails - 如何在没有指纹的情况下链接到 Rails Assets ?

在 js.erb Ruby on Rails 中呈现部分后, Assets 中的 Javascript 无法正常工作

ruby-on-rails-3 - 使 before_validation 等在 ActiveModel 中工作的正确方法是什么

jquery - 我如何使用 AJAX 使我的登录和注册页面在 Rails 3 中相同?

javascript - Angular 验证不适用于选择

javascript - 当输入处于事件状态时,如何使用 angularjs 显示帮助消息?