Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

to_xml: the :methods option works on arrays of records. Closes #5845.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4909 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit d0696d764189996422c3dea649c388b7685a10e5 1 parent ad63005
Jeremy Kemper jeremy authored
2  activerecord/CHANGELOG
View
@@ -1,5 +1,7 @@
*SVN*
+* to_xml: the :methods option works on arrays of records. #5845 [Josh Starcher]
+
* Deprecation: update docs. #5998 [jakob@mentalized.net, Kevin Clark]
* Add some XmlSerialization tests for ActiveRecord [Rick Olson]
2  activerecord/lib/active_record/xml_serialization.rb
View
@@ -160,7 +160,7 @@ def serializable_attributes
end
def serializable_method_attributes
- Array(options.delete(:methods)).collect { |name| MethodAttribute.new(name.to_s, @record) }
+ Array(options[:methods]).collect { |name| MethodAttribute.new(name.to_s, @record) }
end
6 activerecord/test/base_test.rb
View
@@ -1340,6 +1340,12 @@ def test_array_to_xml_including_has_many_association
xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :include => :replies)
assert xml.include?(%(<replies><reply>))
end
+
+ def test_array_to_xml_including_methods
+ xml = [ topics(:first), topics(:second) ].to_xml(:indent => 0, :skip_instruct => true, :methods => [ :topic_id ])
+ assert xml.include?(%(<topic-id type="integer">#{topics(:first).topic_id}</topic-id>))
+ assert xml.include?(%(<topic-id type="integer">#{topics(:second).topic_id}</topic-id>))
+ end
def test_array_to_xml_including_has_one_association
xml = [ companies(:first_firm), companies(:rails_core) ].to_xml(:indent => 0, :skip_instruct => true, :include => :account)
7 activerecord/test/fixtures/topic.rb
View
@@ -9,6 +9,11 @@ def parent
Topic.find(parent_id)
end
+ # trivial method for testing Array#to_xml with :methods
+ def topic_id
+ id
+ end
+
protected
def default_written_on
self.written_on = Time.now unless attribute_present?("written_on")
@@ -17,4 +22,4 @@ def default_written_on
def destroy_children
self.class.delete_all "parent_id = #{id}"
end
-end
+end
Please sign in to comment.
Something went wrong with that request. Please try again.