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,开发人员设置它非常有趣,它非常优雅)。