Module: ActiveRecord::Import::AbstractAdapter::InstanceMethods
- Included in:
- ConnectionAdapters::AbstractAdapter
- Defined in:
- lib/activerecord-import/adapters/abstract_adapter.rb
Instance Method Summary collapse
-
#after_import_synchronize(instances) ⇒ Object
Synchronizes the passed in ActiveRecord instances with the records in the database by calling
reload
on each instance. - #increment_locking_column!(table_name, results, locking_column) ⇒ Object
-
#insert_many(sql, values, _options = {}, *args) ⇒ Object
:nodoc:.
- #next_value_for_sequence(sequence_name) ⇒ Object
-
#post_sql_statements(table_name, options) ⇒ Object
Returns an array of post SQL statements given the passed in options.
- #pre_sql_statements(options) ⇒ Object
- #supports_on_duplicate_key_update? ⇒ Boolean
Instance Method Details
#after_import_synchronize(instances) ⇒ Object
Synchronizes the passed in ActiveRecord instances with the records in the database by calling reload
on each instance.
39 40 41 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 39 def after_import_synchronize( instances ) instances.each(&:reload) end |
#increment_locking_column!(table_name, results, locking_column) ⇒ Object
62 63 64 65 66 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 62 def increment_locking_column!(table_name, results, locking_column) if locking_column.present? results << "\"#{locking_column}\"=#{table_name}.\"#{locking_column}\"+1" end end |
#insert_many(sql, values, _options = {}, *args) ⇒ Object
:nodoc:
7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 7 def insert_many( sql, values, = {}, *args ) # :nodoc: number_of_inserts = 1 base_sql, post_sql = if sql.is_a?( String ) [sql, ''] elsif sql.is_a?( Array ) [sql.shift, sql.join( ' ' )] end sql2insert = base_sql + values.join( ',' ) + post_sql insert( sql2insert, *args ) ActiveRecord::Import::Result.new([], number_of_inserts, [], []) end |
#next_value_for_sequence(sequence_name) ⇒ Object
3 4 5 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 3 def next_value_for_sequence(sequence_name) %(#{sequence_name}.nextval) end |
#post_sql_statements(table_name, options) ⇒ Object
Returns an array of post SQL statements given the passed in options.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 44 def post_sql_statements( table_name, ) # :nodoc: post_sql_statements = [] if supports_on_duplicate_key_update? && [:on_duplicate_key_update] post_sql_statements << sql_for_on_duplicate_key_update( table_name, [:on_duplicate_key_update], [:primary_key], [:locking_column] ) elsif logger && [:on_duplicate_key_update] logger.warn "Ignoring on_duplicate_key_update because it is not supported by the database." end # custom user post_sql post_sql_statements << [:post_sql] if [:post_sql] # with rollup post_sql_statements << rollup_sql if [:rollup] post_sql_statements end |
#pre_sql_statements(options) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 22 def pre_sql_statements() sql = [] sql << [:pre_sql] if [:pre_sql] sql << [:command] if [:command] # add keywords like IGNORE or DELAYED if [:keywords].is_a?(Array) sql.concat([:keywords]) elsif [:keywords] sql << [:keywords].to_s end sql end |
#supports_on_duplicate_key_update? ⇒ Boolean
68 69 70 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 68 def supports_on_duplicate_key_update? true end |