Class: Prato::Types::ExpressionColumn

Inherits:
Object
  • Object
show all
Defined in:
lib/prato/types/expression_column.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(expression, format: nil, filter: nil) ⇒ ExpressionColumn

Returns a new instance of ExpressionColumn.



8
9
10
11
12
# File 'lib/prato/types/expression_column.rb', line 8

def initialize(expression, format: nil, filter: nil)
  @expression = expression
  @format = format
  @filter = filter
end

Instance Attribute Details

#arel_nodeObject (readonly)

Returns the value of attribute arel_node.



6
7
8
# File 'lib/prato/types/expression_column.rb', line 6

def arel_node
  @arel_node
end

#filterObject (readonly)

Returns the value of attribute filter.



6
7
8
# File 'lib/prato/types/expression_column.rb', line 6

def filter
  @filter
end

#formatObject (readonly)

Returns the value of attribute format.



6
7
8
# File 'lib/prato/types/expression_column.rb', line 6

def format
  @format
end

Instance Method Details

#extract_value(record, _) ⇒ Object



33
34
35
# File 'lib/prato/types/expression_column.rb', line 33

def extract_value(record, _)
  record[@sql_alias]
end

#resolve_arel!(base_model, display_id) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/prato/types/expression_column.rb', line 14

def resolve_arel!(base_model, display_id)
  expression_sql = if @expression.is_a?(Symbol)
                     base_model.public_send(@expression)
                   else
                     @expression
                   end

  @sql_alias = display_id.to_s
  @arel_node = Arel::Nodes::Grouping.new(Arel.sql(expression_sql))
end

#select_nodeObject



29
30
31
# File 'lib/prato/types/expression_column.rb', line 29

def select_node
  Arel::Nodes::As.new(@arel_node, Arel.sql(@sql_alias))
end

#sql_node_for(_scope) ⇒ Object



25
26
27
# File 'lib/prato/types/expression_column.rb', line 25

def sql_node_for(_scope)
  @arel_node
end