On Mar 2, 2012, at 10:17 PM, Mark Peterson wrote:
> 
> ### Scenario 2 using remove_root in decode, user.json does not have "id" ###
> 
> def decode(json)
>   Formats.remove_root(ActiveSupport::JSON.decode(json))
> end
> 
> GET /users/123.json
> 
> "{\"image_page\":{\"images\":[{\"id\":123},{\"id\":456}],\"total\":2000,\"count\":2,\"start_index\":0}}"
> 
> p user = #<User:0x00000101133cb8 
> @attributes={"images"=>[#<Image:0x000001011327a0 @attributes={"id"=>123}, 
> @prefix_options={}, @persisted=false>, #<Image:0x00000103a49e40 
> @attributes={"id"=>456}, @prefix_options={}, @persisted=false>], 
> "total"=>2000, "count"=>2, "start_index"=>0}, @prefix_options={}, 
> @persisted=true>

This looks to be a variant of issue #2692:

https://github.com/rails/rails/pull/2692

although the patch in that instance wouldn't fix this bug, as the detection 
heuristic will guess that image_page is a root element to be removed.

It appears that the problem is that remove_root doesn't have any awareness of 
the context in which it's operating - really, we should only be removing the 
appropriately-named root element (if it exists).

--Matt Jones

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-core+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en.

Reply via email to