From 07e2319bdf89a2cdad83074e1a0c387520ea5439 Mon Sep 17 00:00:00 2001 From: Pierre Lancien Date: Fri, 18 Mar 2011 17:58:45 +0100 Subject: [PATCH] Attributes missing in an ActiveResource if they are present in self.site route [#2230 state:resolved] --- activeresource/lib/active_resource/base.rb | 2 +- activeresource/test/abstract_unit.rb | 4 ++-- activeresource/test/cases/base_test.rb | 10 ++++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb index 1607637..a36b911 100644 --- a/activeresource/lib/active_resource/base.rb +++ b/activeresource/lib/active_resource/base.rb @@ -1234,7 +1234,7 @@ module ActiveResource # your_supplier.save def load(attributes) raise ArgumentError, "expected an attributes Hash, got #{attributes.inspect}" unless attributes.is_a?(Hash) - @prefix_options, attributes = split_options(attributes) + @prefix_options = split_options(attributes).first attributes.each do |key, value| @attributes[key.to_s] = case value diff --git a/activeresource/test/abstract_unit.rb b/activeresource/test/abstract_unit.rb index 195f93f..4975420 100644 --- a/activeresource/test/abstract_unit.rb +++ b/activeresource/test/abstract_unit.rb @@ -24,12 +24,12 @@ def setup_response @matz = { :id => 1, :name => 'Matz' }.to_xml(:root => 'person') @david = { :id => 2, :name => 'David' }.to_xml(:root => 'person') @greg = { :id => 3, :name => 'Greg' }.to_xml(:root => 'person') - @addy = { :id => 1, :street => '12345 Street', :country => 'Australia' }.to_xml(:root => 'address') + @addy = { :id => 1, :street => '12345 Street', :country => 'Australia', :person_id => 1 }.to_xml(:root => 'address') @rick = { :name => "Rick", :age => 25 }.to_xml(:root => "person") @joe = { 'person' => { :id => 6, :name => 'Joe' }}.to_json @people = [{ :id => 1, :name => 'Matz' }, { :id => 2, :name => 'David' }].to_xml(:root => 'people') @people_david = [{ :id => 2, :name => 'David' }].to_xml(:root => 'people') - @addresses = [{ :id => 1, :street => '12345 Street', :country => 'Australia' }].to_xml(:root => 'addresses') + @addresses = [{ :id => 1, :street => '12345 Street', :country => 'Australia', :person_id => 1 }].to_xml(:root => 'addresses') # - deep nested resource - # - Luis (Customer) diff --git a/activeresource/test/cases/base_test.rb b/activeresource/test/cases/base_test.rb index 48dacbd..69dddb1 100644 --- a/activeresource/test/cases/base_test.rb +++ b/activeresource/test/cases/base_test.rb @@ -649,6 +649,16 @@ class BaseTest < Test::Unit::TestCase matzs_house.save assert_equal '5', matzs_house.id end + + def test_new_preserves_prefix_attributes + address = StreetAddress.new(:person_id => 1) + assert_equal 1, address.person_id + end + + def test_load_preserves_prefix_attributes + address = StreetAddress.find(1, :params => { :person_id => 1 }) + assert_equal 1, address.person_id + end # Test that loading a resource preserves its prefix_options. def test_load_preserves_prefix_options -- 1.7.0.6