method
add_associations
rails latest stable - Class:
ActiveModel::Serializers::Xml::Serializer
Method deprecated or moved
This method is deprecated or moved on the latest stable version. The last existing version (v4.2.9) is shown here.
add_associations(association, records, opts)private
TODO: This can likely be cleaned up to simple use ActiveSupport::XmlMini.to_tag as well.
# File activemodel/lib/active_model/serializers/xml.rb, line 123
def add_associations(association, records, opts)
merged_options = opts.merge(options.slice(:builder, :indent))
merged_options[:skip_instruct] = true
[:skip_types, :dasherize, :camelize].each do |key|
merged_options[key] = options[key] if merged_options[key].nil? && !options[key].nil?
end
if records.respond_to?(:to_ary)
records = records.to_ary
tag = ActiveSupport::XmlMini.rename_key(association.to_s, options)
type = options[:skip_types] ? { } : { type: "array" }
association_name = association.to_s.singularize
merged_options[:root] = association_name
if records.empty?
@builder.tag!(tag, type)
else
@builder.tag!(tag, type) do
records.each do |record|
if options[:skip_types]
record_type = {}
else
record_class = (record.class.to_s.underscore == association_name) ? nil : record.class.name
record_type = { type: record_class }
end
record.to_xml merged_options.merge(record_type)
end
end
end
else
merged_options[:root] = association.to_s
unless records.class.to_s.underscore == association.to_s
merged_options[:type] = records.class.name
end
records.to_xml merged_options
end
end Related methods
- Instance methods
- serializable_collection
- serializable_hash
- serialize
- Class methods
- new
- Private methods
-
add_associations -
add_attributes_and_methods -
add_extra_behavior -
add_includes -
add_procs