Class: Prato::Types::ExpressionColumn
- Inherits:
-
Object
- Object
- Prato::Types::ExpressionColumn
- Defined in:
- lib/prato/types/expression_column.rb
Instance Attribute Summary collapse
-
#arel_node ⇒ Object
readonly
Returns the value of attribute arel_node.
-
#filter ⇒ Object
readonly
Returns the value of attribute filter.
-
#format ⇒ Object
readonly
Returns the value of attribute format.
Instance Method Summary collapse
- #extract_value(record, _) ⇒ Object
-
#initialize(expression, format: nil, filter: nil) ⇒ ExpressionColumn
constructor
A new instance of ExpressionColumn.
- #resolve_arel!(base_model, display_id) ⇒ Object
- #select_node ⇒ Object
- #sql_node_for(_scope) ⇒ Object
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_node ⇒ Object (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 |
#filter ⇒ Object (readonly)
Returns the value of attribute filter.
6 7 8 |
# File 'lib/prato/types/expression_column.rb', line 6 def filter @filter end |
#format ⇒ Object (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_node ⇒ Object
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 |