我有以下型号:
class Address < ActiveRecord::Base
validates_presence_of :street, postal_code
end
class Person < ActiveRecord::Base
belongs_to :address
belongs_to :work_address, :class_name => 'Address'
accepts_nested_attributes_for :address, :work_address
def initialize(params={})
params[:address] = Address.new
params[:work_address] = Address.new
super
end
end
尝试创建人员时:
person = {
"address_attributes" => {:street => "foo", :postal_code => "45632-963"}
"work_address_attributes" => {:street => "bar", :postal_code => "45632-964"}
}
Person.create(person)
我得到了一个填充了地址字段的人员对象,但是 work_adress 字段是空白的。但是,当我尝试时它可以工作:
p.work_address_attributes = {:street => "bar", :postal_code => "45632-964"}
在我看来,我有以下代码:
<%= form_for(@person) do |form| %>
...
<%= form.fields_for :address do |address| %>
<%= address.text_field :street %>
<%= address.text_field :postal_code %>
<% end %>
<%= form.fields_for :work_address do |work_address| %>
<%= work_address.text_field :street %>
<%= work_address.text_field :postal_code %>
<% end %>
<%= form.submit %>
<% end %>
怎么了?