Class: LogicalQueryParser::AssocResolver
- Inherits:
-
Object
- Object
- LogicalQueryParser::AssocResolver
- Defined in:
- lib/logical_query_parser/assoc_resolver.rb
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(relation, *options) ⇒ AssocResolver
constructor
A new instance of AssocResolver.
Constructor Details
#initialize(relation, *options) ⇒ AssocResolver
Returns a new instance of AssocResolver.
7 8 9 10 |
# File 'lib/logical_query_parser/assoc_resolver.rb', line 7 def initialize(relation, *) @relation = relation @options = .flatten(1) end |
Instance Method Details
#call ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/logical_query_parser/assoc_resolver.rb', line 12 def call root_node = AssocNode.new(klass: @relation.klass, table_name: @relation.table_name) resolve_assocs(@relation.klass, root_node, @options) join_relation = @relation.klass.unscoped.left_joins(root_node.join_structure) root_node.descendants.each_with_index do |node, i| join_source = join_relation.arel.join_sources[i] node.table_name = join_source&.left&.name || node.klass.table_name end root_node end |