class Activecube::Query::Selector::CombineSelector

Public Class Methods

new(selectors, operator) click to toggle source
# File lib/activecube/query/selector.rb, line 13
def initialize selectors, operator
  @selectors = selectors
  @operator = operator
end

Public Instance Methods

append_query(model, cube_query, arel_table, query) click to toggle source
# File lib/activecube/query/selector.rb, line 34
def append_query model, cube_query, arel_table, query

  @selectors.each do |s|
    query = s.append_with!(model, cube_query, arel_table, query)
  end

  query.where expression(model, arel_table, cube_query)
end
expression(model, arel_table, cube_query) click to toggle source
# File lib/activecube/query/selector.rb, line 26
def expression model, arel_table, cube_query
  expr = nil
  @selectors.each do |s|
    expr = expr ? expr.send( operator.operation, s.expression(model, arel_table, cube_query)) : s.expression(model, arel_table, cube_query)
  end
  expr
end
required_column_names() click to toggle source
# File lib/activecube/query/selector.rb, line 18
def required_column_names
  @selectors.map(&:required_column_names).uniq
end
to_s() click to toggle source
# File lib/activecube/query/selector.rb, line 22
def to_s
  "Selector #{operator.operation}(#{@selectors.map(&:to_s).join(',')})"
end