class ActiveRecord::Calculations::ColumnAliasTracker
Experimental RBS support (using type sampling data from the type_fusion
project).
# sig/active_record/relation/calculations.rbs class ActiveRecord::Calculations::ColumnAliasTracker def alias_for: (String field) -> String def column_alias_for: (String field) -> String end
:nodoc:
def alias_for(field)
Experimental RBS support (using type sampling data from the type_fusion
project).
def alias_for: (String field) -> String
This signature was generated using 2 samples from 1 application.
def alias_for(field) aliased_name = column_alias_for(field) if @aliases[aliased_name] == 0 @aliases[aliased_name] = 1 aliased_name else # Update the count count = @aliases[aliased_name] += 1 "#{truncate(aliased_name)}_#{count}" end end
def column_alias_for(field)
Experimental RBS support (using type sampling data from the type_fusion
project).
def column_alias_for: (String field) -> String
This signature was generated using 1 sample from 1 application.
column_alias_for("count(distinct users.id)") # => "count_distinct_users_id"
column_alias_for("sum(id)") # => "sum_id"
column_alias_for("users.id") # => "users_id"
a usable column name:
Converts the given field to the value that the database adapter returns as
def column_alias_for(field) column_alias = +field column_alias.gsub!(/\*/, "all") column_alias.gsub!(/\W+/, " ") column_alias.strip! column_alias.gsub!(/ +/, "_") @connection.table_alias_for(column_alias) end
def initialize(connection)
def initialize(connection) @connection = connection @aliases = Hash.new(0) end
def truncate(name)
def truncate(name) name.slice(0, @connection.table_alias_length - 2) end