【发布时间】:2016-12-15 06:26:40
【问题描述】:
我有一个模型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! 时如何检查是否要检查相关验证以及背后的原因。
如果对此有任何额外要求,请告诉我。
【问题讨论】:
标签: ruby-on-rails validation activerecord