I have this models: Store and Address.
The second model Address I’m using this with other models and has some custom fields inside for different models.
Yes like polymorphic but without the varchar field for Class, I’m using an integer. (optimization stuff)
now on my Store model the association in set like this:
class Store < ActiveRecord::Base
has_many :addresses, :foreign_key => "parent_id", :conditions => ['parent_kind = ?', 2]
accepts_nested_attributes_for :addresses
end
Now in my controller I do:
@store.addresses.build
And I can use f.fields_for :addresses... inside the form.
The problem comes out when I submit the form and the data is saved to the database.
The record in the stores table is saved, the record in addresses is saved with the parent_id of the store in place, but the parent_kind is in 0 which is the default value for that attribute on MySQL.
My Quick fix was this:
@store = Store.new(params[:store])
@store.addresses[0].parent_kind = 2
if @store.save
....
But I know there must be another way.
Anny suggestions?
Thanks.
Did you try using a hidden field in your nested form?
EDIT
If you don’t want to use it due to security concerns, here’s another way that might help. You can try using an association callback like so: