我的模型Order
就像
# app/models/order.rb
class Order< ApplicationRecord
has_one :detail
has_one :extra
..
end
我有两个orders
order1 = Order.first
order1.detail #<OrderDetail:0x00 name: "abc", remark: 'test1'>
order1.extra #<OrderExtra:0x00 email: nil, recipent: nil>
order2 = Order.second
order1.detail #<OrderDetail:0x00 name: "abc", remark: 'test1'>
order1.extra #<OrderExtra:0x00 email: nil, recipent: "xyz">
当我致电order1.valid?
或order1.save!
时,它不会检查OrderExtra
验证并返回true。但是当我致电order2.valid?
或order2.save!
时,它会检查OrderExtra
验证。
order1.save! # true
order2.save! # ActiveRecord Invalid OrderExtra
我想知道rails如何在调用save!
时检查相关验证以及背后的原因时检查。
如果需要任何其他要求,请告诉我。
答案 0 :(得分:2)
使用MasterDetailPage
强制执行相关的模型验证
Text
如果尚未分配关联,则此验证不会失败。如果您想确保关联存在且保证有效,您还需要使用Toolbar
。
validates_associated