Method: ActiveRecord::Querying#count_by_sql

Defined in:
activerecord/lib/active_record/querying.rb

#count_by_sql(sql) ⇒ Object

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 ActiveRecord::Calculations class methods. Look into those before using this method, as it could lock you into a specific database engine or require a code change to switch database engines.

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.


109
110
111
112
113
# File 'activerecord/lib/active_record/querying.rb', line 109

def count_by_sql(sql)
  with_connection do |c|
    c.select_value(sanitize_sql(sql), "#{name} Count").to_i
  end
end