- add_limit!
- add_limit_offset!
- add_lock!
- begin_db_transaction
- commit_db_transaction
- default_sequence_name
- delete
- execute
- insert
- reset_sequence!
- rollback_db_transaction
- select
- select_all
- select_one
- select_value
- select_values
- transaction
- update
Alias for add_limit_offset!.
[ show 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
[ show 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'
[ show 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).
[ show 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).
[ show source ]
# File vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb, line 76 76: def commit_db_transaction() end
[ show 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.
[ show 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.
[ show 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.
[ show 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.
[ show 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.
[ show 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.
[ show 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.
[ show 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
[ show 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]
[ show 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.
[ show 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.
[ show 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
Returns an array of record hashes with the column names as keys and column values as values.
[ show 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