Got a weird situation with an update put to a controller with a form with
nested attributes.

On the data below, I am updating data for both items ('0' and '1') in
rosters_attributes (in the example below I am updating the 'name' attribute
to a new value in both cases. What I am stuck on is that '1' gets its data
updated, regardless of what field I update, while '0' does not get updated
regardless of the field.

However, update_attributes(params[:matchup]) returns true, so there is no
error. If the second was not updating I would assume something is wrong in
my code in terms of attributes getting assigned to a model, but that does
not seem to be the case.

 Parameters: {
  "matchup"=>
  {
     "end_date(3i)"=>"19", "end_date(4i)"=>"16", "end_date(5i)"=>"46",
     "rosters_attributes"=>
     {
        "0"=>
        {
            "name"=>"abc", "players_rosters_attributes"=>
            {
               "0"=>{"player_id"=>"1", "id"=>"65"},
               "1"=>{"player_id"=>"2", "id"=>"66"},
               "2"=>{"player_id"=>"3", "id"=>"67"},
               "3"=>{"player_id"=>"4", "id"=>"68"}
             },
             "id"=>"17"
         },
        "1"=>
        {
            "name"=>"bcd", "players_rosters_attributes"=>
            {
               "0"=>{"player_id"=>"3", "id"=>"69"},
               "1"=>{"player_id"=>"2", "id"=>"70"},
               "2"=>{"player_id"=>"7", "id"=>"71"},
               "3"=>{"player_id"=>"8", "id"=>"72"}
            },
            "id"=>"18"
         }
     },
     "release_date(1i)"=>"2012", "release_date(2i)"=>"5",
"release_date(3i)"=>"19", "release_date(4i)"=>"16",
"end_date(1i)"=>"2012", "release_date(5i)"=>"46", "end_date(2i)"=>"5"},
"commit"=>"Update Fantasy matchup",
"authenticity_token"=>"lAOYIXDYqm965eIyAv4/MXZSTgGSsx11DIea0XLGiZo=",
"utf8"=>"✓", "id"=>"9"}


Also, in the server, I see that the first Roster is loading but does not get
its name updated while the second does.

  User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 2
LIMIT 1
  UserProfile Load (0.4ms)  SELECT `user_profiles`.* FROM `user_profiles`
WHERE (`user_profiles`.user_id = 2) LIMIT 1
  FantasyMatchup Load (0.3ms)  SELECT `matchups`.* FROM `fantasy_matchups`
WHERE `fantasy_matchups`.`id` = 9 LIMIT 1
  SQL (0.1ms)  BEGIN
  Roster Load (0.3ms)  SELECT `rosters`.* FROM `rosters` WHERE
`rosters`.`id` IN (17, 18) AND (`rosters`.matchup_id = 9)
*# This does not update but should*
*  PlayersRoster Load (0.3ms)  SELECT `players_rosters`.* FROM
`players_rosters` WHERE `players_rosters`.`id` IN (65, 66, 67, 68) AND
(`players_rosters`.roster_id = 17)
  CACHE (0.0ms)  SELECT `matchups`.* FROM `fantasy_matchups` WHERE
`fantasy_matchups`.`id` = 9 LIMIT 1
*  SQL (0.7ms)  SELECT COUNT(*) FROM `rosters` INNER JOIN `bets` ON
`bets`.`roster_id` = `rosters`.`id` WHERE (`rosters`.matchup_id = 9)
  CACHE (0.0ms)  SELECT `matchups`.* FROM `fantasy_matchups` WHERE
`fantasy_matchups`.`id` = 9 LIMIT 1
  CACHE (0.0ms)  SELECT COUNT(*) FROM `rosters` INNER JOIN `bets` ON
`bets`.`roster_id` = `rosters`.`id` WHERE (`rosters`.matchup_id = 9)*
# This updates*
*  PlayersRoster Load (0.4ms)  SELECT `players_rosters`.* FROM
`players_rosters` WHERE `players_rosters`.`id` IN (69, 70, 71, 72) AND
(`players_rosters`.roster_id = 18)
  AREL (0.4ms)  UPDATE `rosters` SET `name` = 'bcd', `updated_at` =
'2011-05-19 17:12:53' WHERE `rosters`.`id` = 18
*  SQL (0.8ms)  COMMIT


Any ideas, anyone?

Thanks,

David

-- 
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