Took longer than I thought to get a basic use case that fails. Scenario 2 
below is the failure:

My Code:

class User < ActiveResource::Base
  self.site = "http://localhost:9000";
end

class Image < ActiveResource::Base
end

class ImagePage < ActiveResource::Base
  self.element_name = "image_page"
  self.collection_name = "irrelevant_never_used_in_this_manner"
end

class ApplicationController < ActionController::Base
  def index
      Dir.glob("#{Rails.root}/app/models/*.rb").sort.each { |file| 
require_dependency file }
    user = User.find(123)
    p user
    render :text => "hello world"
  end
end

### Scenario 1 using remove_root in decode, user.json has "id" ###

def decode(json)
  Formats.remove_root(ActiveSupport::JSON.decode(json))
end

GET /users/123.json

"{\"id\":\"123\",\"image_page\":{\"images\":[{\"id\":123},{\"id\":456}],\"total\":2000,\"count\":2,\"start_index\":0}}"

p user = #<User:0x00000103ab6c98 @attributes={"id"=>"123", 
"image_page"=>#<ImagePage:0x00000103ab5cd0 
@attributes={"images"=>[#<Image:0x00000103aac158 @attributes={"id"=>123}, 
@prefix_options={}, @persisted=false>, #<Image:0x00000103aabed8 
@attributes={"id"=>456}, @prefix_options={}, @persisted=false>], 
"total"=>2000, "count"=>2, "start_index"=>0}, @prefix_options={}, 
@persisted=false>}, @prefix_options={}, @persisted=true>


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


### Scenario 3 not using remove_root in decode, user.json has "id" ###

def decode(json)
  ActiveSupport::JSON.decode(json)
end

GET /users/123.json

"{\"id\":\"123\",\"image_page\":{\"images\":[{\"id\":123},{\"id\":456}],\"total\":2000,\"count\":2,\"start_index\":0}}"

p user = #<User:0x0000010455a168 @attributes={"id"=>"123", 
"image_page"=>#<ImagePage:0x00000104559880 
@attributes={"images"=>[#<Image:0x00000104557c88 @attributes={"id"=>123}, 
@prefix_options={}, @persisted=false>, #<Image:0x00000104557a08 
@attributes={"id"=>456}, @prefix_options={}, @persisted=false>], 
"total"=>2000, "count"=>2, "start_index"=>0}, @prefix_options={}, 
@persisted=false>}, @prefix_options={}, @persisted=true>


### Scenario 4 not using remove_root in decode, user.json does not have 
"id" ###

def decode(json)
  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:0x000001044166d0 
@attributes={"image_page"=>#<ImagePage:0x00000104415f28 
@attributes={"images"=>[#<Image:0x00000104414920 @attributes={"id"=>123}, 
@prefix_options={}, @persisted=false>, #<Image:0x000001044146a0 
@attributes={"id"=>456}, @prefix_options={}, @persisted=false>], 
"total"=>2000, "count"=>2, "start_index"=>0}, @prefix_options={}, 
@persisted=false>}, @prefix_options={}, @persisted=true>



-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-core/-/Qi9TVxvlzcQJ.
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-core?hl=en.

Reply via email to