Setting values in nested objects


I have a model with nested objects similar to this:

class Person < ActiveRecord
has_many :addresses
accepts_nested_attributes_for :addresses
accepts_nested_attributes_for :home
class Address < ActiveRecord
belongs_to :person
has_one :home
class Home < ActiveRecord
belongs_to :person
belongs_to :address

In my form, I’d like to offer the user the option of selecting the
address and home from a selection or add a new home/address in a text
field. If a home/address is selected in the selection, I want to
ignore the text field. If the renamed blank field is selected, then
grab the text field. If the value in the text field is already used,
then reuse the ID. I’d also like to propagate the “address” and
“person” values to home, but it seems I can only do one or the other
with build.

I’ve been able to get all the form magic to work, but saving doesn’t
go as planned. I have to intercept the save, but I’m not sure where
the best place is. Do I override “new” and “update” or do a
“before_save” or … ?

Thanks in advance,

Just noticed I had a typo. Forgot to include “has_many :homes” in
Person model. Fixed below.

Any advice on where to update the nested objects?

Thanks in advance,

I think this great screencast should do help you :