class DatastaxRails::XmlSerializer
Implementation of ActiveModel's XML Serializer
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/datastax_rails/serializers/xml_serializer.rb, line 185 def initialize(*args) super end
Public Instance Methods
add_associations(association, records, opts)
click to toggle source
TODO: This can likely be cleaned up to simple use ActiveSupport::XmlMini.to_tag as well.
# File lib/datastax_rails/serializers/xml_serializer.rb, line 202 def add_associations(association, records, opts) association_name = association.to_s.singularize merged_options = options.merge(opts).merge!(root: association_name, skip_instruct: true) if records.is_a?(Enumerable) tag = ActiveSupport::XmlMini.rename_key(association.to_s, options) type = options[:skip_types] ? {} : { type: 'array' } 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 elsif (record = @serializable.send(association)) record.to_xml(merged_options) end end
add_extra_behavior()
click to toggle source
# File lib/datastax_rails/serializers/xml_serializer.rb, line 189 def add_extra_behavior add_includes end
add_includes()
click to toggle source
# File lib/datastax_rails/serializers/xml_serializer.rb, line 193 def add_includes procs = options.delete(:procs) @serializable.send(:serializable_add_includes, options) do |association, records, opts| add_associations(association, records, opts) end options[:procs] = procs end