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.



1261
1262
1263
# File 'lib/active_record/refined/ast.rb', line 1261

def initialize(relation)
  @relation = relation
end

Instance Attribute Details

#relationObject (readonly)

Returns the value of attribute relation.



1259
1260
1261
# File 'lib/active_record/refined/ast.rb', line 1259

def relation
  @relation
end

Instance Method Details

#to_arel(_table, _model) ⇒ Object



1265
1266
1267
1268
1269
1270
1271
# File 'lib/active_record/refined/ast.rb', line 1265

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