ruby-on-rails - Rails 协会 - 至少有一个

标签 ruby-on-rails ruby database ruby-on-rails-3

我有一个模型 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/

相关文章:

ruby - 忽略 lambda 参数检查

Ruby Koans 和字符串

javascript - Rails Magic 如何将正确的 js 文件连接到正确的 .html.erb

javascript - Bootstrap shown.bs.tab 事件不工作

ios - Formotion 推广 RubyMotion

ruby-on-rails - act_as_list 与 has_and_belongs_to_many 关系

ruby-on-rails - 如果在 Ruby 中包含 "+"到 %2B,如何对电子邮件进行编码

sql-server - 无法访问我通过 Visual Studio 创建的数据库?

python - 如何从 (.db) 文件读取 python 变量并为其赋值

ruby-on-rails - 基础数据库关联