Module ActiveRecord::ConnectionAdapters::DatabaseStatements
In: vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb

Methods

Public Instance methods

Alias for add_limit_offset!.

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 83
83:       def add_limit!(sql, options)
84:         add_limit_offset!(sql, options) if options
85:       end

Appends LIMIT and OFFSET options to a SQL statement. This method modifies the sql parameter.

Examples
 add_limit_offset!('SELECT * FROM suppliers', {:limit => 10, :offset => 50})

generates

 SELECT * FROM suppliers LIMIT 10 OFFSET 50

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 93
 93:       def add_limit_offset!(sql, options)
 94:         if limit = options[:limit]
 95:           sql << " LIMIT #{limit}"
 96:           if offset = options[:offset]
 97:             sql << " OFFSET #{offset}"
 98:           end
 99:         end
100:       end

Appends a locking clause to a SQL statement. *Modifies the sql parameter*.

  # SELECT * FROM suppliers FOR UPDATE
  add_lock! 'SELECT * FROM suppliers', :lock => true
  add_lock! 'SELECT * FROM suppliers', :lock => ' FOR UPDATE'

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 106
106:       def add_lock!(sql, options)
107:         case lock = options[:lock]
108:           when true:   sql << ' FOR UPDATE'
109:           when String: sql << " #{lock}"
110:         end
111:       end

Begins the transaction (and turns off auto-committing).

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 73
73:       def begin_db_transaction()    end

Commits the transaction (and turns on auto-committing).

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 76
76:       def commit_db_transaction()   end

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 113
113:       def default_sequence_name(table, column)
114:         nil
115:       end

Executes the delete statement and returns the number of rows affected.

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 46
46:       def delete(sql, name = nil)
47:         update(sql, name)
48:       end

Executes the SQL statement in the context of this connection.

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 31
31:       def execute(sql, name = nil)
32:         raise NotImplementedError, "execute is an abstract method"
33:       end

Returns the last auto-generated ID from the affected table.

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 36
36:       def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
37:         raise NotImplementedError, "insert is an abstract method"
38:       end

Set the sequence to the max value of the table‘s column.

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 118
118:       def reset_sequence!(table, column, sequence = nil)
119:         # Do nothing by default.  Implement for PostgreSQL, Oracle, ...
120:       end

Rolls back the transaction (and turns on auto-committing). Must be done if the transaction block raises an exception or returns false.

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 80
80:       def rollback_db_transaction() end

Returns an array of record hashes with the column names as keys and column values as values.

[Source]

   # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 6
6:       def select_all(sql, name = nil)
7:         select(sql, name)
8:       end

Returns a record hash with the column names as keys and column values as values.

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 12
12:       def select_one(sql, name = nil)
13:         result = select(sql, name)
14:         result.first if result
15:       end

Returns a single value from a record

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 18
18:       def select_value(sql, name = nil)
19:         result = select_one(sql, name)
20:         result.nil? ? nil : result.values.first
21:       end

Returns an array of the values of the first column in a select:

  select_values("SELECT id FROM companies LIMIT 3") => [1,2,3]

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 25
25:       def select_values(sql, name = nil)
26:         result = select_all(sql, name)
27:         result.map{ |v| v.values.first }
28:       end

Wrap a block in a transaction. Returns result of block.

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 51
51:       def transaction(start_db_transaction = true)
52:         transaction_open = false
53:         begin
54:           if block_given?
55:             if start_db_transaction
56:               begin_db_transaction 
57:               transaction_open = true
58:             end
59:             yield
60:           end
61:         rescue Exception => database_transaction_rollback
62:           if transaction_open
63:             transaction_open = false
64:             rollback_db_transaction
65:           end
66:           raise
67:         end
68:       ensure
69:         commit_db_transaction if transaction_open
70:       end

Executes the update statement and returns the number of rows affected.

[Source]

    # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 41
41:       def update(sql, name = nil)
42:         execute(sql, name)
43:       end

Protected Instance methods

Returns an array of record hashes with the column names as keys and column values as values.

[Source]

     # File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 125
125:         def select(sql, name = nil)
126:           raise NotImplementedError, "select is an abstract method"
127:         end

[Validate]