Class: ActiveRecord::Refined::AST::DistinctFrom

Inherits:
Predicate show all
Defined in:
lib/active_record/refined/ast.rb

Overview

IS [NOT] DISTINCT FROM, spelled IS / IS NOT on SQLite and <=> on MySQL. NULL compares as a value here, which is what separates these from = and <>.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Predicate

#!, #&, #|

Methods inherited from Node

#as, #asc, #desc

Constructor Details

#initialize(operand, value, negated: false) ⇒ DistinctFrom

Returns a new instance of DistinctFrom.



1321
1322
1323
1324
1325
# File 'lib/active_record/refined/ast.rb', line 1321

def initialize(operand, value, negated: false)
  @operand = operand
  @value = value
  @negated = negated
end

Instance Attribute Details

#negatedObject (readonly)

Returns the value of attribute negated.



1319
1320
1321
# File 'lib/active_record/refined/ast.rb', line 1319

def negated
  @negated
end

#operandObject (readonly)

Returns the value of attribute operand.



1319
1320
1321
# File 'lib/active_record/refined/ast.rb', line 1319

def operand
  @operand
end

#valueObject (readonly)

Returns the value of attribute value.



1319
1320
1321
# File 'lib/active_record/refined/ast.rb', line 1319

def value
  @value
end

Instance Method Details

#to_arel(table, model) ⇒ Object



1327
1328
1329
1330
1331
1332
1333
1334
1335
# File 'lib/active_record/refined/ast.rb', line 1327

def to_arel(table, model)
  arel_operand = to_arel_operand(operand, table, model)
  arel_value = value.is_a?(Node) ? value.to_arel(table, model) : value
  if negated
    arel_operand.is_distinct_from(arel_value)
  else
    arel_operand.is_not_distinct_from(arel_value)
  end
end