提交 e391c7a9 编写于 作者: G Grzegorz Forysinski 提交者: Pratik Naik

Ensure ActiveResource#load works with numeric arrays [Grzegorz Forysinski, Elad Meidar]

[#2305 state:resolved]
Signed-off-by: NPratik Naik <pratiknaik@gmail.com>
上级 08ec2205
......@@ -1020,7 +1020,13 @@ def load(attributes)
case value
when Array
resource = find_or_create_resource_for_collection(key)
value.map { |attrs| attrs.is_a?(String) ? attrs.dup : resource.new(attrs) }
value.map do |attrs|
if attrs.is_a?(String) || attrs.is_a?(Numeric)
attrs.duplicable? ? attrs.dup : attrs
else
resource.new(attrs)
end
end
when Hash
resource = find_or_create_resource_for(key)
resource.new(value)
......
......@@ -51,7 +51,9 @@ def setup
:id => 1, :state => { :id => 1, :name => 'Oregon',
:notable_rivers => [
{ :id => 1, :name => 'Willamette' },
{ :id => 2, :name => 'Columbia', :rafted_by => @matz }] }}}
{ :id => 2, :name => 'Columbia', :rafted_by => @matz }],
:postal_codes => [97018,1234567890],
:places => ["Columbia City", "Unknown"]}}}
@person = Person.new
end
......@@ -127,6 +129,19 @@ def test_recursively_loaded_collections
assert_kind_of Person::Street::State::NotableRiver, rivers.first
assert_equal @deep[:street][:state][:notable_rivers].first[:id], rivers.first.id
assert_equal @matz[:id], rivers.last.rafted_by.id
postal_codes = state.postal_codes
assert_kind_of Array, postal_codes
assert_equal 2, postal_codes.size
assert_kind_of Fixnum, postal_codes.first
assert_equal @deep[:street][:state][:postal_codes].first, postal_codes.first
assert_kind_of Bignum, postal_codes.last
assert_equal @deep[:street][:state][:postal_codes].last, postal_codes.last
places = state.places
assert_kind_of Array, places
assert_kind_of String, places.first
assert_equal @deep[:street][:state][:places].first, places.first
end
def test_nested_collections_within_the_same_namespace
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册