我有一个模型,它有很多。
还有一个要求:ShippingOption
必须至少有一个ShippingSpeedOptions
,这应该得到验证,因为它在接口中是可移动的
所以我在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
问题是,使用此验证时,
ShippingSpeedOption
根本无法保存,因为它没有ShippingOption
。关联由ShippingOption
中的ShippingSpeedOptions
定义。我该怎么处理?
最佳答案
使用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.