Class: ActiveRecord::Result
- Includes:
- Enumerable
- Defined in:
- activerecord/lib/active_record/result.rb
Overview
This class encapsulates a Result returned from calling exec_query
on any database connection adapter. For example:
result = ActiveRecord::Base.connection.exec_query('SELECT id, title, body FROM posts')
result # => #<ActiveRecord::Result:0xdeadbeef>
# Get the column names of the result:
result.columns
# => ["id", "title", "body"]
# Get the record values of the result:
result.rows
# => [[1, "title_1", "body_1"],
[2, "title_2", "body_2"],
...
]
# Get an array of hashes representing the result (column => value):
result.to_hash
# => [{"id" => 1, "title" => "title_1", "body" => "body_1"},
{"id" => 2, "title" => "title_2", "body" => "body_2"},
...
]
# ActiveRecord::Result also includes Enumerable.
result.each do |row|
puts row['title'] + " " + row['body']
end
Constant Summary collapse
- IDENTITY_TYPE =
:nodoc:
Class.new { def type_cast(v); v; end }.new
Instance Attribute Summary collapse
-
#column_types ⇒ Object
readonly
Returns the value of attribute column_types.
-
#columns ⇒ Object
readonly
Returns the value of attribute columns.
-
#rows ⇒ Object
readonly
Returns the value of attribute rows.
Instance Method Summary collapse
- #[](idx) ⇒ Object
- #column_type(name) ⇒ Object
- #each ⇒ Object
-
#empty? ⇒ Boolean
Returns true if there are no records.
-
#identity_type ⇒ Object
:nodoc:.
-
#initialize(columns, rows, column_types = {}) ⇒ Result
constructor
A new instance of Result.
- #initialize_copy(other) ⇒ Object
- #last ⇒ Object
- #to_ary ⇒ Object
- #to_hash ⇒ Object
Methods included from Enumerable
#as_json, #exclude?, #index_by, #many?, #sum
Constructor Details
#initialize(columns, rows, column_types = {}) ⇒ Result
Returns a new instance of Result.
38 39 40 41 42 43 |
# File 'activerecord/lib/active_record/result.rb', line 38 def initialize(columns, rows, column_types = {}) @columns = columns @rows = rows @hash_rows = nil @column_types = column_types end |
Instance Attribute Details
#column_types ⇒ Object (readonly)
Returns the value of attribute column_types
36 37 38 |
# File 'activerecord/lib/active_record/result.rb', line 36 def column_types @column_types end |
#columns ⇒ Object (readonly)
Returns the value of attribute columns
36 37 38 |
# File 'activerecord/lib/active_record/result.rb', line 36 def columns @columns end |
#rows ⇒ Object (readonly)
Returns the value of attribute rows
36 37 38 |
# File 'activerecord/lib/active_record/result.rb', line 36 def rows @rows end |
Instance Method Details
#[](idx) ⇒ Object
77 78 79 |
# File 'activerecord/lib/active_record/result.rb', line 77 def [](idx) hash_rows[idx] end |
#column_type(name) ⇒ Object
49 50 51 |
# File 'activerecord/lib/active_record/result.rb', line 49 def column_type(name) @column_types[name] || identity_type end |
#each ⇒ Object
53 54 55 56 57 58 59 |
# File 'activerecord/lib/active_record/result.rb', line 53 def each if block_given? hash_rows.each { |row| yield row } else hash_rows.to_enum { @rows.size } end end |
#empty? ⇒ Boolean
Returns true if there are no records.
69 70 71 |
# File 'activerecord/lib/active_record/result.rb', line 69 def empty? rows.empty? end |
#identity_type ⇒ Object
:nodoc:
45 46 47 |
# File 'activerecord/lib/active_record/result.rb', line 45 def identity_type # :nodoc: IDENTITY_TYPE end |
#initialize_copy(other) ⇒ Object
85 86 87 88 89 90 |
# File 'activerecord/lib/active_record/result.rb', line 85 def initialize_copy(other) @columns = columns.dup @rows = rows.dup @column_types = column_types.dup @hash_rows = nil end |
#last ⇒ Object
81 82 83 |
# File 'activerecord/lib/active_record/result.rb', line 81 def last hash_rows.last end |
#to_ary ⇒ Object
73 74 75 |
# File 'activerecord/lib/active_record/result.rb', line 73 def to_ary hash_rows end |
#to_hash ⇒ Object
61 62 63 |
# File 'activerecord/lib/active_record/result.rb', line 61 def to_hash hash_rows end |