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
This commit is contained in:
Jeremy Kemper 2006-09-02 21:00:09 +00:00
parent ad63005cdd
commit d0696d7641
4 changed files with 15 additions and 2 deletions

View File

@ -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]

View File

@ -160,7 +160,7 @@ module ActiveRecord #:nodoc:
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

View File

@ -1341,6 +1341,12 @@ class BasicsTest < Test::Unit::TestCase
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)
assert xml.include?(companies(:first_firm).account.to_xml(:indent => 0, :skip_instruct => true))

View File

@ -9,6 +9,11 @@ class Topic < ActiveRecord::Base
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")