Try using the ID inside (this works for me):
params = { 'form' => { 'name' => 'paul', 'dni' => '17002034z',
'projects_attributes' => {
'1' => { 'id' => '1', 'name' => 'ZZZZ', 'cost' =>
'25000' },
'2' => { 'id' => '2', 'name' => 'YYYY', 'cost' =>
'3400'}}}}
An element with an ID is considered to be updated instead of created.
On May 20, 7:09 am, Gonzalo <[email protected]> wrote:
> hi all,
>
> i have the following models:
>
> class Developer < ActiveRecord::Base
> has_and_belongs_to_many :projects
> accepts_nested_attributes_for :projects
> end
>
> class Project < ActiveRecord::Base
> has_and_belongs_to_many :developers
> accepts_nested_attributes_for :developers
> end
>
> the following code:
>
> params = { 'form' => { 'name' => 'gonzalo', 'dni' => '12876365x',
> 'projects_attributes' => {
> 'new_01' => { 'name' => 'Sioux', 'cost' => '25000' },
> 'new_02' => { 'name' => 'Apache', 'cost' =>
> '3400'}}}}
> Developer.create(params['form'])
>
> will create a new Developer and two new Projects and the corresponding
> association between Developer and Projects.
>
> then, I add a new Developer using the same mechanism:
>
> params = { 'form' => { 'name' => 'paul', 'dni' => '17002034z',
> 'projects_attributes' => {
> '1' => { 'name' => 'ZZZZ', 'cost' => '25000' },
> '2' => { 'name' => 'YYYY', 'cost' => '3400'}}}}
> Developer.create(params['form'])
>
> following NestedAttributes documentation... this code should add a new
> Developer (paul) and link it against the two already created Projects
> with ids 1 and 2. Besides, this code should modiify projects names
> from Sioux and Apache to ZZZZ and YYYY respectively.
>
> the real result is that a new Developer (paul) is added but linked
> against two new Projects (ZZZZ and YYYY)
>
> am I doing something wrong? should i use another approach to face this
> problem? is accept_nested_attributes_for feature compatible with habtm
> associations?
>
> and last... what if i just want to create a new Developer (paul) that
> is associated with the already created Projects with ids 1 and 2? The
> following code won't work:
>
> params = { 'form' => { 'name' => 'paul', 'dni' => '17002034z',
> 'projects_attributes' => {
> '1' => { },
> '2' => { }}}}
> Developer.create(params['form'])
>
> thanks in advance for your help!
> regards.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---