Class: ActiveRecord::Refined::AST::Comparison
- Defined in:
- lib/active_record/refined/ast.rb
Overview
A plain SQL comparison. The value is passed through as it is, so a Range or an Array compares against a PostgreSQL range or array column, the way Active Record's own force_equality? types do.
Constant Summary collapse
- OPERATOR_MAP =
{ :== => :eq, :!= => :not_eq, :> => :gt, :>= => :gteq, :< => :lt, :<= => :lteq }.freeze
Instance Attribute Summary collapse
-
#column ⇒ Object
readonly
Returns the value of attribute column.
-
#operator ⇒ Object
readonly
Returns the value of attribute operator.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Instance Method Summary collapse
-
#initialize(column, operator, value) ⇒ Comparison
constructor
A new instance of Comparison.
- #to_arel(table, model) ⇒ Object
Methods inherited from Predicate
Methods inherited from Node
Constructor Details
#initialize(column, operator, value) ⇒ Comparison
Returns a new instance of Comparison.
1808 1809 1810 1811 1812 |
# File 'lib/active_record/refined/ast.rb', line 1808 def initialize(column, operator, value) @column = column @operator = operator @value = value end |
Instance Attribute Details
#column ⇒ Object (readonly)
Returns the value of attribute column.
1806 1807 1808 |
# File 'lib/active_record/refined/ast.rb', line 1806 def column @column end |
#operator ⇒ Object (readonly)
Returns the value of attribute operator.
1806 1807 1808 |
# File 'lib/active_record/refined/ast.rb', line 1806 def operator @operator end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
1806 1807 1808 |
# File 'lib/active_record/refined/ast.rb', line 1806 def value @value end |
Instance Method Details
#to_arel(table, model) ⇒ Object
1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 |
# File 'lib/active_record/refined/ast.rb', line 1814 def to_arel(table, model) arel_column = to_arel_operand(column, table, model) arel_value = case value when Node then value.to_arel(table, model) when ::Symbol then column_operand(value, table, model) when ActiveRecord::Relation then scalar_subquery(value) else quote_number(value) end arel_column.public_send(OPERATOR_MAP.fetch(operator), arel_value) end |