Rails 3:validation组合的值

在Rails 2.x中,你可以使用validation来确保你有一个独特的组合值,像这样:

validates_uniqueness_of :husband, :scope => :wife 

在相应的迁移中,它可能看起来像这样:

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

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

 validates :husband, :presence => true 

任何想法如何在Rails 3中实现联合validation? Rails 2.xvalidation仍然在Rails 3中工作,所以我仍然可以使用第一个示例,但看起来如此“古老”,有没有更好的方法?

忍受着我。 ActiveModel中的validates方法的作用是寻找Validator。

:presence => true查找PresenceValidator并将选项: true传递给validation程序的初始化程序。

我想你想要

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

(唯一性validation程序实际上是ActiveRecord的一部分,而不是ActiveModel,开发人员设置它非常有趣,它非常优雅)。