Sha256: a1d65b8c0ff0047ef15da2036f46481f063a9aa73dd17a796ead68b7861baa72

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

module ActiveRecord::Turntable
  module ActiveRecordExt
    module ActiverecordImportExt
      extend ActiveSupport::Concern

      included do
        alias_method_chain :values_sql_for_columns_and_attributes, :turntable
      end

      private

      def values_sql_for_columns_and_attributes_with_turntable(columns, array_of_attributes)
        connection_memo = connection
        array_of_attributes.map do |arr|
          my_values = arr.each_with_index.map do |val,j|
            column = columns[j]

            # be sure to query sequence_name *last*, only if cheaper tests fail, because it's costly
            if val.nil? && column.name == primary_key && !sequence_name.blank?
              if sequencer_enabled?
                connection_memo.next_sequence_value(sequence_name)
              else
                connection_memo.next_value_for_sequence(sequence_name)
              end
            else
              if serialized_attributes.include?(column.name)
                connection_memo.quote(serialized_attributes[column.name].dump(val), column)
              else
                connection_memo.quote(val, column)
              end
            end
          end
          "(#{my_values.join(',')})"
        end
      end
    end

    begin
      require 'activerecord-import'
      require 'activerecord-import/base'
      (class << ActiveRecord::Base; self; end).send(:include, ActiverecordImportExt)
    rescue LoadError
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activerecord-turntable-2.0.0.rc1 lib/active_record/turntable/active_record_ext/activerecord_import_ext.rb