validate vs validates_associated

时间:2010-11-19 04:21:36

标签: ruby-on-rails validation activerecord

可以直接在关联上使用validate说明符(请参阅此Rails Guide的4.1.2.12以及validates_associated(请参阅Rails Guide处的3.2) )。 两者有何不同?

1 个答案:

答案 0 :(得分:2)

他们都验证了相关的模型。

区别在于第一个是关联上的选项(例如belongs_tohas_many等)。例如。您可以在关联中定义“验证行为”。

在经典的“作者有很多书籍”示例中,假设您在Book模型上启用belongs_to :author, :validate => true。每次验证Book模型时,关联的Author也必须有效。

另一个是单独的验证规则,您可以将其添加到其他验证中。因此,在这种情况下,您可以启用关联对象的验证以及其他验证规则。

这可以相反。在作者:has_many :books ; validates_associated :books。验证Author对象时,也会验证所有书籍。