Class: Activecube::Query::Slice
- Defined in:
- lib/activecube/query/slice.rb
Instance Attribute Summary collapse
-
#field ⇒ Object
readonly
Returns the value of attribute field.
-
#modifier ⇒ Object
readonly
Returns the value of attribute modifier.
Attributes inherited from Item
Instance Method Summary collapse
- #[](key) ⇒ Object
- #alias!(new_key) ⇒ Object
- #append_query(_model, cube_query, table, query) ⇒ Object
- #dimension_class ⇒ Object
-
#initialize(cube, key, dimension, field = nil, modifier = nil) ⇒ Slice
constructor
A new instance of Slice.
- #to_s ⇒ Object
Methods inherited from Item
Constructor Details
#initialize(cube, key, dimension, field = nil, modifier = nil) ⇒ Slice
Returns a new instance of Slice.
5 6 7 8 9 10 |
# File 'lib/activecube/query/slice.rb', line 5 def initialize cube, key, dimension, field = nil, modifier = nil super cube, key, dimension @field = field @modifier = modifier field_methods! if field.try(:definition).kind_of?(Hash) end |
Instance Attribute Details
#field ⇒ Object (readonly)
Returns the value of attribute field.
4 5 6 |
# File 'lib/activecube/query/slice.rb', line 4 def field @field end |
#modifier ⇒ Object (readonly)
Returns the value of attribute modifier.
4 5 6 |
# File 'lib/activecube/query/slice.rb', line 4 def modifier @modifier end |
Instance Method Details
#[](key) ⇒ Object
12 13 14 15 16 17 |
# File 'lib/activecube/query/slice.rb', line 12 def [] key unless (definition.kind_of? Activecube::Dimension) && !self.field && (field = definition.class.fields[key]) raise "Field #{key} is not defined for #{definition.name}" end Slice.new cube, key, definition, field end |
#alias!(new_key) ⇒ Object
19 20 21 |
# File 'lib/activecube/query/slice.rb', line 19 def alias! new_key self.class.new cube, new_key, definition, field, modifier end |
#append_query(_model, cube_query, table, query) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/activecube/query/slice.rb', line 27 def append_query _model, cube_query, table, query attr_alias = "`#{key.to_s}`" expr = field ? Arel.sql( modifier || field.definition ) : table[dimension_class.column_name] query = query.project(expr.as(attr_alias)) if identity = dimension_class.identity query = query.project(table[identity]).group(table[identity]) else query = query.group(attr_alias) end if cube_query.orderings.empty? query = query.order(attr_alias) end query end |
#dimension_class ⇒ Object
23 24 25 |
# File 'lib/activecube/query/slice.rb', line 23 def dimension_class definition.class end |
#to_s ⇒ Object
46 47 48 |
# File 'lib/activecube/query/slice.rb', line 46 def to_s "Dimension #{super}" end |