我有一个模型,它有很多。
还有一个要求:
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.

10-06 11:10