    # File lib/active_record/base.rb, line 1685
          def to_xml(options = {})
            options[:root]    ||= self.class.to_s.underscore
            options[:except]    = Array(options[:except]) << self.class.inheritance_column unless options[:only] # skip type column
            root_only_or_except = { :only => options[:only], :except => options[:except] }

            attributes_for_xml = attributes(root_only_or_except)

            if include_associations = options.delete(:include)
              include_has_options = include_associations.is_a?(Hash)

              for association in include_has_options ? include_associations.keys : Array(include_associations)
                association_options = include_has_options ? include_associations[association] : root_only_or_except

                case self.class.reflect_on_association(association).macro
                  when :has_many, :has_and_belongs_to_many
                    records = send(association).to_a
                    unless records.empty?
                      attributes_for_xml[association] = records.collect do |record|
                        record.attributes(association_options)
                      end
                    end
                  when :has_one, :belongs_to
                    if record = send(association)
                      attributes_for_xml[association] = record.attributes(association_options)
                    end
                end
              end
            end

            attributes_for_xml.to_xml(options)
          end