1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
# frozen_string_literal: true
module Arel # :nodoc: all
module Nodes
class TableAlias < Arel::Nodes::Binary
alias :name :right
alias :relation :left
alias :table_alias :name
def [](name)
relation.is_a?(Table) ? relation[name, self] : Attribute.new(self, name)
end
def table_name
relation.respond_to?(:name) ? relation.name : name
end
def type_cast_for_database(attr_name, value)
relation.type_cast_for_database(attr_name, value)
end
def type_for_attribute(name)
relation.type_for_attribute(name)
end
def able_to_type_cast?
relation.respond_to?(:able_to_type_cast?) && relation.able_to_type_cast?
end
def to_cte
Arel::Nodes::Cte.new(name, relation)
end
end
end
end
|