我是 Rails 新手,因此非常感谢任何建议。
我有一个带有嵌套属性地址的类条目,
/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
像这样的类地址
/app/models/address.rb
class Address < ActiveRecord::Base
belongs_to :entry
validates :zip, :presence => true
end
在嵌套形式中,我有
/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
这个想法是,当呈现表单时,“构建”将在数据库中列出的当前地址之外创建一个空的“地址”。保存更改后,如果创建的新地址仍然为空,则会被拒绝并且不会保存到数据库中。
但是 address.rb 中的验证是在保存之前进行验证,因此用户无法继续进行保存操作。有什么我遗漏的吗?