嵌套属性:尽管有reject_if:All_blank,但不需要的验证

Jam*_*Liu 6 validation ruby-on-rails nested-attributes

我是rails的新手所以非常感谢任何建议.

我有一个带有嵌套属性地址的类Entry,

/app/models/entry.rb

class Entry < ActiveRecord::Base
  has_many :addresses, :dependent => :destroy
  accepts_nested_attributes_for :addresses,
                                :allow_destroy => true,
                                :reject_if => :all_blank
end
Run Code Online (Sandbox Code Playgroud)

像这样的类地址

/app/models/address.rb

class Address < ActiveRecord::Base
  belongs_to :entry
  validates :zip, :presence => true
end
Run Code Online (Sandbox Code Playgroud)

我以嵌套的形式

/app/view/entries/_form.html.slim

= simple_form_for(@entry) do |f|
  = f.error_notification
  - @entry.addresses.build
  .form-inputs
    = f.simple_fields_for :addresses do |address|
      = render 'address_form', :f => address
Run Code Online (Sandbox Code Playgroud)

我们的想法是,在呈现表单时,除了数据库中列出的当前地址之外,"build"还将创建一个空的"地址".保存更改后,如果创建的新地址仍为空,则会被拒绝并且不会保存到数据库中.

但是,address.rb中的验证在保存之前进行验证,因此用户无法继续执行保存操作.有什么我遗漏的吗?

B.I*_*.I. 0

尝试false作为参数传递以save跳过验证。