ruby-on-rails – Rails ActiveRecord:跳过关联的验证
发布时间:2020-12-17 01:44:41 所属栏目:百科 来源:网络整理
导读:我正在重新询问 this question,因为代码和示例是错误的(它实际上适用于所示的情况). 鉴于这些模型: class Author ActiveRecord::Base has_many :books validates_presence_of :emailendclass Book ActiveRecord::Base belongs_to :author validates_presenc
我正在重新询问
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 我们可以在创建图书时跳过验证: b = Book.new b.save(:validate => false) 但是,如果我们从数据库中检索无效的Book并将其分配给Author中的关联,则不允许我们保存Author: a = Author.new a.email = "foo" a.books = Book.all a.save! 这是错误:
我们如何跳过相关图书模型的验证而不为作者跳过它们? 请注意,说has_many:books,:validate =>作者中的false没有帮助:在保存作者的情况下静默丢弃关联. 解决方法
试试吧
class Author < ActiveRecord::Base has_many :books,:validate => false validates_presence_of :email after_save :save_invalid_books def save_invalid_books books.each do |b| b.save(false) end end end 据我了解,validate => false仅允许您保存作者而不会被无效的书籍停止,但是为了保存关联,您需要一本有效的书籍,因为您将更改author_id键. 当然,这段代码可以通过多种方式得到增强,因为每次开始时可能没有必要保存所有书籍,但是你明白了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读