mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
ActiveResource can load array of strings, like serialize :bar, Array
Signed-off-by: rick <technoweenie@gmail.com> [#1055 state:resolved]
This commit is contained in:
@@ -884,6 +884,7 @@ module ActiveResource
|
||||
#
|
||||
# ==== Examples
|
||||
# my_attrs = {:name => 'J&J Textiles', :industry => 'Cloth and textiles'}
|
||||
# my_attrs = {:name => 'Marty', :colors => ["red", "green", "blue"]}
|
||||
#
|
||||
# the_supplier = Supplier.find(:first)
|
||||
# the_supplier.name # => 'J&M Textiles'
|
||||
@@ -906,7 +907,7 @@ module ActiveResource
|
||||
case value
|
||||
when Array
|
||||
resource = find_or_create_resource_for_collection(key)
|
||||
value.map { |attrs| resource.new(attrs) }
|
||||
value.map { |attrs| attrs.is_a?(String) ? attrs.dup : resource.new(attrs) }
|
||||
when Hash
|
||||
resource = find_or_create_resource_for(key)
|
||||
resource.new(value)
|
||||
|
||||
@@ -46,10 +46,24 @@ class BaseTest < Test::Unit::TestCase
|
||||
:children => [{:name => 'Natacha'}]},
|
||||
{:name => 'Milena',
|
||||
:children => []}]}]}.to_xml(:root => 'customer')
|
||||
# - resource with yaml array of strings; for ActiveRecords using serialize :bar, Array
|
||||
@marty = <<-eof
|
||||
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
||||
<person>
|
||||
<id type=\"integer\">5</id>
|
||||
<name>Marty</name>
|
||||
<colors type=\"yaml\">---
|
||||
- \"red\"
|
||||
- \"green\"
|
||||
- \"blue\"
|
||||
</colors>
|
||||
</person>
|
||||
eof
|
||||
|
||||
ActiveResource::HttpMock.respond_to do |mock|
|
||||
mock.get "/people/1.xml", {}, @matz
|
||||
mock.get "/people/2.xml", {}, @david
|
||||
mock.get "/people/5.xml", {}, @marty
|
||||
mock.get "/people/Greg.xml", {}, @greg
|
||||
mock.get "/people/4.xml", {'key' => 'value'}, nil, 404
|
||||
mock.put "/people/1.xml", {}, nil, 204
|
||||
@@ -851,4 +865,14 @@ class BaseTest < Test::Unit::TestCase
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_load_yaml_array
|
||||
assert_nothing_raised do
|
||||
marty = Person.find(5)
|
||||
assert_equal 3, marty.colors.size
|
||||
marty.colors.each do |color|
|
||||
assert_kind_of String, color
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user