我在Order和ShippingAddress之间有一对一的关系。并非总是订单具有ShippingAddress。 AA代码:
f.inputs "Shipping address", for: [:shipping_address, f.object.shipping_address || ShippingAddress.new] do |shipping|
shipping.input :firstname
shipping.input :lastname
shipping.input :address1
shipping.input :address2
shipping.input :phone
shipping.input :country
shipping.input :state
shipping.input :city
shipping.input :zip
end
我的问题是编辑订单时。它总是尝试创建一个新的送货地址并验证其字段 - 这些字段为空,因此在验证期间失败。我不想在编辑订单时创建送货地址,除非填写了字段。
答案 0 :(得分:1)
你的问题不是AA,而是Rails。
您要使用的是reject_if
:
has_one :shipping_address,
reject_if: -> { |attrs| attrs[:firstname].blank? } # check any attributes you want
通过这种方式,您可以确保Rails不会尝试创建不需要的关联。
答案 1 :(得分:1)
这就是你需要的:
accepts_nested_attributes_for :shipping_address, reject_if: proc { |attrs| attrs[:firstname].blank? }