Class: Arel::Row

Inherits:
Object
  • Object
show all
Defined in:
lib/arel/algebra/relations/row.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(relation, tuple) ⇒ Row

Returns a new instance of Row.



5
6
7
8
# File 'lib/arel/algebra/relations/row.rb', line 5

def initialize relation, tuple
  @relation = relation
  @tuple = tuple
end

Instance Attribute Details

#relationObject (readonly)

Returns the value of attribute relation.



3
4
5
# File 'lib/arel/algebra/relations/row.rb', line 3

def relation
  @relation
end

#tupleObject (readonly)

Returns the value of attribute tuple.



3
4
5
# File 'lib/arel/algebra/relations/row.rb', line 3

def tuple
  @tuple
end

Instance Method Details

#[](attribute) ⇒ Object



10
11
12
# File 'lib/arel/algebra/relations/row.rb', line 10

def [](attribute)
  attribute.type_cast(tuple[relation.position_of(attribute)])
end

#bind(relation) ⇒ Object



21
22
23
# File 'lib/arel/algebra/relations/row.rb', line 21

def bind(relation)
  Row.new(relation, tuple)
end

#combine(other, relation) ⇒ Object



25
26
27
# File 'lib/arel/algebra/relations/row.rb', line 25

def combine(other, relation)
  Row.new(relation, tuple + other.tuple)
end

#slice(*attributes) ⇒ Object



14
15
16
17
18
19
# File 'lib/arel/algebra/relations/row.rb', line 14

def slice(*attributes)
  Row.new(relation, attributes.map do |attribute|
    # FIXME TESTME method chaining
    tuple[relation.relation.position_of(attribute)]
  end)
end