Hi

I'm working on an issue described in this ticket:
https://rails.lighthouseapp.com/projects/8994/tickets/2415-accepts_nested_attributes_for-doest-work-when-nested_attributes-hash-has-an-id-entry#ticket-2415-6

I've a nested form, in which the user can either create a new entry or
choose an existing one. Choosing an existing entry in a nested form is a
problem, because the association in the join table won't be created (in
Rails 2.3.6 the ActiveRecord::RecordNotFound exception will be raised as
described in the ticket).

I had a look at the patch in the ticket and amended it, so when the id
in nested attributes is set, I read the record from the db and create
the association in the join table. Unfortunately, creating the
association is not working properly.

here's my code:
          reflection =
self.class.reflect_on_association(association_name)
          # fetch the record
          record =
eval("#{reflection.klass.name}.find(#{attributes['id']})")
          if record.nil?
            raise_nested_attributes_record_not_found(association_name,
attributes['id'])
          end

          # create the association
          association.send(:add_record_to_target_with_callbacks, record)
unless association.loaded?
          assign_to_or_mark_for_destruction(record, attributes,
options[:allow_destroy])

The last two lines doesn't create the association. I looked at the
active record code but haven't found a way to create the association
only. All the build/create/update methods will create a new record.

Would be nice if someone who's familiar with the active record code
could help me out! Let me know if you need more information on this.

Thanks,
David
-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to