Class: ActiveRecord::Refined::AST::Exists

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

Overview

EXISTS (SELECT ...) for a relation. Correlate the subquery with the outer table through qualified columns. EXISTS only asks whether a row comes back, so unlike In there is no select list to fix up.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Predicate

#!, #&, #|

Methods inherited from Node

#as, #asc, #desc

Constructor Details

#initialize(relation) ⇒ Exists

Returns a new instance of Exists.



577
578
579
# File 'lib/active_record/refined/ast.rb', line 577

def initialize(relation)
  @relation = relation
end

Instance Attribute Details

#relationObject (readonly)

Returns the value of attribute relation.



575
576
577
# File 'lib/active_record/refined/ast.rb', line 575

def relation
  @relation
end

Instance Method Details

#to_arel(_table) ⇒ Object



581
582
583
584
585
586
587
# File 'lib/active_record/refined/ast.rb', line 581

def to_arel(_table)
  subquery = relation
  if subquery.eager_loading?
    subquery = subquery.send(:apply_join_dependency)
  end
  subquery.arel.exists
end