我有一个模型ShippingOption
,它has_many ShippingSpeedOptions
还有一个要求:
- 一个
ShippingOption
必须至少有一个ShippingSpeedOption
,这应该被验证,因为它在接口中是可移动的
所以我在ShippingOption
上使用自定义验证:
def has_at_least_one_shipping_speed_option
errors.add(:shipping_speed_options, "Must have at least one delivery speed package") if self.shipping_speed_options.count <= 0
end
问题是,通过此验证,根本无法保存ShippingOption
,因为它没有ShippingSpeedOptions
。关联由 ShippingSpeedOption
中的shipping_option_id
定义。
我应该如何处理?
使用 build
,它会产生"等待中的关联",该关联将在保存对象时创建。
@shipping_option = ShippingOption.new
@shipping_option.shipping_speed_options.build(:shipping_speed => <speed>)
@shipping_option.save
#at this point the validation is satisfied, @shipping_option is saved and the option is created.