diff options
Diffstat (limited to 'lib/active_relation/relations/alias.rb')
-rw-r--r-- | lib/active_relation/relations/alias.rb | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/active_relation/relations/alias.rb b/lib/active_relation/relations/alias.rb index 5f4a10a672..2d1b9c1476 100644 --- a/lib/active_relation/relations/alias.rb +++ b/lib/active_relation/relations/alias.rb @@ -2,14 +2,35 @@ module ActiveRelation module Relations class Alias < Compound attr_reader :alias + alias_method :name, :alias def initialize(relation, aliaz) @relation, @alias = relation, aliaz end - + + def attributes + relation.attributes.collect(&method(:substitute)) + end + def ==(other) relation == other.relation and self.alias == other.alias end + + protected + def table_sql + "#{quote_table_name(relation.name)} AS #{quote_table_name(@alias)}" + end + + def attribute(name) + if unaliased_attribute = relation[name] + substitute(unaliased_attribute) + end + end + + private + def substitute(attribute) + Primitives::Attribute.new(self, attribute.name, attribute.alias) + end end end end
\ No newline at end of file |