我有一个模型 ShippingOption
,它有_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.
关于ruby-on-rails - Rails 协会 - 至少有一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22833416/