以下是2个型号:客户和地址。客户has_one
地址。
class Customer < ActiveRecord::Base
has_one :address
accepted_nested_attributes_for :address, :allow_destroy => true
end
class Address < ActiveRecord::Base
belongs_to :customer
validates :add_line, :presence => true
end
<% simple_form_for @customer do |f| %>
.....
<%=f.simple_fields_for :address do |builder| %>
<%=render ('address', f: builder) %>
<% end %>
<%end %>
地址视图
<%=f.input :add_line %>
address
是customer
中的嵌套属性。我们遇到的问题是,如果在address
视图中错误地修改了add_line
(例如,只有customer
),则没有错误(客户控制器中的@customer.update_attributes
)弹出起来。有没有办法以这种方式设置嵌套属性nil add_line
将无法更新?
答案 0 :(得分:1)
有两件事引起了我的注意:
一,请记住belongs_to :customer
模型中需要Address
。
二,您需要在Customer模型中添加验证
class Customer < ActiveRecord::Base
has_one :address
accepted_nested_attributes_for :address, allow_destroy: true, reject_if: :address_invalid
private
def address_invalid(attributes)
# add custom validation code here ...
end
end