Module: ActiveRecord::Querying
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Extended In:
| |
Defined in: | activerecord/lib/active_record/querying.rb |
Instance Attribute Summary
- #average readonly
- #calculate readonly
- #count readonly
- #create_with readonly
- #delete_all readonly
- #destroy_all readonly
- #distinct readonly
- #eager_load readonly
- #except readonly
- #extending readonly
- #fifth readonly
- #find readonly
- #find_by readonly
- #find_each readonly
- #find_in_batches readonly
- #find_or_create_by readonly
- #find_or_initialize_by readonly
- #first readonly
- #first_or_create readonly
- #first_or_initialize readonly
- #forty_two readonly
- #fourth readonly
- #from readonly
- #group readonly
- #having readonly
- #ids readonly
- #in_batches readonly
- #includes readonly
- #joins readonly
- #last readonly
- #left_joins readonly
- #left_outer_joins readonly
- #limit readonly
- #lock readonly
- #maximum readonly
- #merge readonly
- #minimum readonly
- #none readonly
- #offset readonly
- #or readonly
- #order readonly
- #pluck readonly
- #preload readonly
- #readonly readonly
- #references readonly
- #reorder readonly
- #rewhere readonly
- #second readonly
- #second_to_last readonly
- #select readonly
- #sum readonly
- #take readonly
- #third readonly
- #third_to_last readonly
- #unscope readonly
- #update_all readonly
- #where readonly
Instance Method Summary
- #any? ⇒ Boolean
-
#count_by_sql(sql)
Returns the result of an SQL statement that should only include a COUNT(*) in the SELECT part.
- #exists? ⇒ Boolean
- #fifth!
- #find_by!
-
#find_by_sql(sql, binds = [], preparable: nil, &block)
Executes a custom SQL query against your database and returns all the results.
- #find_or_create_by!
- #first!
- #first_or_create!
- #forty_two!
- #fourth!
- #last!
- #many? ⇒ Boolean
- #none? ⇒ Boolean readonly
- #one? ⇒ Boolean
- #second!
- #second_to_last!
- #take!
- #third!
- #third_to_last!
Instance Attribute Details
#average (readonly)
[ GitHub ]#calculate (readonly)
[ GitHub ]#count (readonly)
[ GitHub ]#create_with (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#delete_all (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 10
delegate :destroy_all, :delete_all, :update_all, to: :all
#destroy_all (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 10
delegate :destroy_all, :delete_all, :update_all, to: :all
#distinct (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#eager_load (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#except (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#extending (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#fifth (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#find (readonly)
[ GitHub ]#find_by (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 9
delegate :find_by, :find_by!, to: :all
#find_each (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 11
delegate :find_each, :find_in_batches, :in_batches, to: :all
#find_in_batches (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 11
delegate :find_each, :find_in_batches, :in_batches, to: :all
#find_or_create_by (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 8
delegate :find_or_create_by, :find_or_create_by!, :find_or_initialize_by, to: :all
#find_or_initialize_by (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 8
delegate :find_or_create_by, :find_or_create_by!, :find_or_initialize_by, to: :all
#first (readonly)
[ GitHub ]#first_or_create (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 7
delegate :first_or_create, :first_or_create!, :first_or_initialize, to: :all
#first_or_initialize (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 7
delegate :first_or_create, :first_or_create!, :first_or_initialize, to: :all
#forty_two (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#fourth (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#from (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#group (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#having (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#ids (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 16
delegate :pluck, :ids, to: :all
#in_batches (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 11
delegate :find_each, :find_in_batches, :in_batches, to: :all
#includes (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#joins (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#last (readonly)
[ GitHub ]#left_joins (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#left_outer_joins (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#limit (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#lock (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#maximum (readonly)
[ GitHub ]#merge (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#minimum (readonly)
[ GitHub ]#none (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#offset (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#or (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#order (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#pluck (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 16
delegate :pluck, :ids, to: :all
#preload (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#readonly (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#references (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#reorder (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#rewhere (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#second (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#second_to_last (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#select (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#sum (readonly)
[ GitHub ]#take (readonly)
[ GitHub ]#third (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#third_to_last (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#unscope (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
#update_all (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 10
delegate :destroy_all, :delete_all, :update_all, to: :all
#where (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 12
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or, :where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :having, :create_with, :distinct, :references, :none, :unscope, :merge, to: :all
Instance Method Details
#any? ⇒ Boolean
#count_by_sql(sql)
Returns the result of an SQL statement that should only include a COUNT(*) in the SELECT part. The use of this method should be restricted to complicated SQL queries that can’t be executed using the Calculations
class methods. Look into those before using this.
Product.count_by_sql "SELECT COUNT(*) FROM sales s, customers c WHERE s.customer_id = c.id"
# => 12
Parameters
-
sql
- An SQL statement which should return a count query from the database, see the example above.
# File 'activerecord/lib/active_record/querying.rb', line 66
def count_by_sql(sql) connection.select_value(sanitize_sql(sql), "#{name} Count").to_i end
#exists? ⇒ Boolean
#fifth!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#find_by!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 9
delegate :find_by, :find_by!, to: :all
#find_by_sql(sql, binds = [], preparable: nil, &block)
Executes a custom SQL query against your database and returns all the results. The results will be returned as an array with columns requested encapsulated as attributes of the model you call this method from. If you call Product.find_by_sql
then the results will be returned in a Product
object with the attributes you specified in the SQL query.
If you call a complicated SQL query which spans multiple tables the columns specified by the SELECT will be attributes of the model, whether or not they are columns of the corresponding table.
The sql
parameter is a full SQL query as a string. It will be called as is, there will be no database agnostic conversions performed. This should be a last resort because using, for example, MySQL specific terms will lock you to using that particular database engine or require you to change your call if you switch engines.
# A simple SQL query spanning multiple tables
Post.find_by_sql "SELECT p.title, c.author FROM posts p, comments c WHERE p.id = c.post_id"
# => [#<Post:0x36bff9c @attributes={"title"=>"Ruby Meetup", "first_name"=>"Quentin"}>, ...]
You can use the same string replacement techniques as you can with QueryMethods#where:
Post.find_by_sql ["SELECT title FROM posts WHERE author = ? AND created > ?", , start_date]
Post.find_by_sql ["SELECT body FROM comments WHERE author = :user_id OR approved_by = :user_id", { :user_id => user_id }]
# File 'activerecord/lib/active_record/querying.rb', line 40
def find_by_sql(sql, binds = [], preparable: nil, &block) result_set = connection.select_all(sanitize_sql(sql), "#{name} Load", binds, preparable: preparable) column_types = result_set.column_types.dup attribute_types.each_key { |k| column_types.delete k } = ActiveSupport::Notifications.instrumenter payload = { record_count: result_set.length, class_name: name } .instrument("instantiation.active_record", payload) do result_set.map { |record| instantiate(record, column_types, &block) } end end
#find_or_create_by!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 8
delegate :find_or_create_by, :find_or_create_by!, :find_or_initialize_by, to: :all
#first!
[ GitHub ]#first_or_create!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 7
delegate :first_or_create, :first_or_create!, :first_or_initialize, to: :all
#forty_two!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#fourth!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#last!
[ GitHub ]
#many? ⇒ Boolean
#none? ⇒ Boolean
(readonly)
#one? ⇒ Boolean
#second!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#second_to_last!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#take!
[ GitHub ]#third!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
#third_to_last!
[ GitHub ]# File 'activerecord/lib/active_record/querying.rb', line 6
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all