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