【发布时间】:2011-05-22 14:07:01
【问题描述】:
我重新询问this question,因为代码和示例有误(它实际上在所示情况下有效)。
鉴于这些模型:
class Author < ActiveRecord::Base
has_many :books
validates_presence_of :email
end
class Book < ActiveRecord::Base
belongs_to :author
validates_presence_of :title
end
我们可以在创建 Book 时跳过验证:
b = Book.new
b.save(:validate => false)
但是如果我们从数据库中检索到无效的书并将其分配给作者中的关联,我们就不能保存作者:
a = Author.new
a.email = "foo"
a.books = Book.all
a.save!
这是错误:
ActiveRecord::RecordInvalid:验证失败:书籍无效
我们如何跳过相关 Book 模型的验证而不跳过 Author 的验证?
请注意,在 Author 中说 has_many :books, :validate => false 并没有帮助:关联被默默地丢弃,而 Author 被保存。
【问题讨论】:
标签: ruby-on-rails validation activerecord ruby-on-rails-3 associations