Ruby on rails Rails:为什么调用'valid?'只验证部分关联记录而不是所有关联记录
我有一个型号Ruby on rails Rails:为什么调用'valid?'只验证部分关联记录而不是所有关联记录,ruby-on-rails,validation,activerecord,Ruby On Rails,Validation,Activerecord,我有一个型号订单,如下所示 # app/models/order.rb class Order< ApplicationRecord has_one :detail has_one :extra .. end 当我调用order1.valid?或order1.save它将不检查OrderExtra验证,并返回true。但是当我调用order2.valid?或order2.save它检查OrderExtra验证 order1.save! # true order2.save!
订单
,如下所示
# app/models/order.rb
class Order< ApplicationRecord
has_one :detail
has_one :extra
..
end
当我调用order1.valid?
或order1.save代码>它将不检查OrderExtra
验证,并返回true。但是当我调用order2.valid?
或order2.save代码>它检查OrderExtra
验证
order1.save! # true
order2.save! # ActiveRecord Invalid OrderExtra
我想知道rails如何在调用save时检查相关的验证代码>以及背后的原因
请让我知道这方面是否需要任何其他要求。使用相关的validates\u
强制执行相关的模型验证
class Book < ActiveRecord::Base
has_many :pages
belongs_to :library
validates_associated :pages, :library
end
使用validates_associated
强制执行关联的模型验证
class Book < ActiveRecord::Base
has_many :pages
belongs_to :library
validates_associated :pages, :library
end
谢谢这对我有帮助。但是我更感兴趣的是知道rails决定如何验证相关记录的原因?在我的例子中,它验证一个而放弃另一个订单的检查。谢谢这对我有帮助。但是我更感兴趣的是知道rails决定如何验证相关记录的原因?在我的例子中,它验证一个订单,而放弃另一个订单的检查。
class Library < ActiveRecord::Base
has_many :books
validates_presence_of :name
end