The models I am using are Merchant, Address, Phone, & Contact. The relationsships are as follows:
Merchant:
has_many :phones, :as => :phoneable, :dependent => :destroy
has_many :addresses, :as => :addressable, :dependent => :destroy
has_many :contacts, :as => :entity, :dependent => :destroy
Contact:
has_many :phones, :as => :phoneable, :dependent => :destroy
has_many :addresses, :as => :addressable, :dependent => :destroy
I have a form where one can create a parent record with two address records and many phone records. My merchants controller new method has this setup code:
@merchant.addresses.build (:address_type => "Dba")
@merchant.addresses.build (:address_type => "Mailing")
@merchant.phones.build (:phone_type => "Business")
@merchant.phones.build (:phone_type => "Fax")
The actual form has;
<%= f.fields_for :addresses do |a| %>
for the two addresses for the merchant, and;
<%= f.fields_for :phones do |p| %>
for the merchant's phone records.
The problem I am having is when adding the contacts it's address and phone records;
<%= f.fields_for :contacts do |c| %>
<%= f.fields_for :addresses do |a| %>
<%= f.fields_for :phones do |p| %>
which renders two addresses and phones for each contact record.
I only want the two addresses for the merchant record. How do I get the two addresses.build & phones.build to create records only for the parent and build only one address & phone record for each contact (which will be added to the form dynamically via a link)?