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.
42 43 44 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 42 def after_import_synchronize( instances ) instances.each(&:reload) end |
#increment_locking_column!(table_name, results, locking_column) ⇒ Object
65 66 67 68 69 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 65 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:
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 9 def insert_many( sql, values, = {}, *args ) # :nodoc: number_of_inserts = 1 base_sql, post_sql = case sql when String [sql, ''] when 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
5 6 7 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 5 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.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 47 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], [:model], [: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
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 25 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
71 72 73 |
# File 'lib/activerecord-import/adapters/abstract_adapter.rb', line 71 def supports_on_duplicate_key_update? false end |