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:
parent
ad63005cdd
commit
d0696d7641
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue