method
initial_count_for
v5.2.3 -
Show latest stable
- Class:
ActiveRecord::Associations::AliasTracker
initial_count_for(connection, name, table_joins)public
No documentation available.
# File activerecord/lib/active_record/associations/alias_tracker.rb, line 21
def self.initial_count_for(connection, name, table_joins)
quoted_name = nil
counts = table_joins.map do |join|
if join.is_a?(Arel::Nodes::StringJoin)
# quoted_name should be case ignored as some database adapters (Oracle) return quoted name in uppercase
quoted_name ||= connection.quote_table_name(name)
# Table names + table aliases
join.left.scan(
/JOIN(?:\s+\w+)?\s+(?:\S+\s+)?(?:#{quoted_name}|#{name})\sON/
).size
elsif join.is_a?(Arel::Nodes::Join)
join.left.name == name ? 1 : 0
elsif join.is_a?(Hash)
join[name]
else
raise ArgumentError, "joins list should be initialized by list of Arel::Nodes::Join"
end
end
counts.sum
end