ユーザーには、shipping(:address_type=0) とbilling(:address_type=1) の 2 つの住所があります。住所タイプごとに 2 つの従来のネストされたフォームを含むユーザー フォームは、送信されるたびに平方時間生成され、検証に失敗します。
モデル:
class User < ActiveRecord::Base
has_many :addresses, :dependent => :destroy
accepts_nested_attributes_for :addresses
validates_associated :addresses
end
class Address < ActiveRecord::Base
belongs_to :user
validates :user, :address_type, :first_name, :last_name, :street
end
コントローラ
class UsersController < ApplicationController
public
def new
@user = User.new
@shipping_address = @user.addresses.build({:address_type => 0})
@billing_address = @user.addresses.build({:address_type => 1})
end
def create
@user = User.new(params[:user])
if @user.save
#fine
else
render => :new
end
end
未完成のフォーム
=form_for @user, :html => { :multipart => true } do |ff|
=ff.fields_for :addresses, @shipping_address do |f|
=f.hidden_field :address_type, :value => 0
=ff.fields_for :addresses, @billing_address do |f|
=f.hidden_field :address_type, :value => 1
=ff.submit