module ActiveRecord::QueryMethods
Attributes
is_recursive[RW]
with_values[RW]
Public Instance Methods
build_arel_with_cte()
click to toggle source
# File lib/active_record_cte/relation/query_methods.rb, line 43 def build_arel_with_cte arel = build_arel_without_cte build_with_clause(arel) unless @with_values.empty? arel end
build_with_clause(arel)
click to toggle source
# File lib/active_record_cte/relation/query_methods.rb, line 22 def build_with_clause(arel) ctes = with_values.map do |cte_query| table = Arel::Table.new(cte_query[0]) query = cte_query[1] case query when Arel::Nodes::Union Arel::Nodes::As.new(table, query) else raise 'Not Implemented!' end end if is_recursive arel.with(:recursive, *ctes) else arel.with(*ctes) end end
with(query)
click to toggle source
# File lib/active_record_cte/relation/query_methods.rb, line 5 def with(query) return self if query.blank? relation = clone relation.with_values << query.flatten relation end
with_recursive(query)
click to toggle source
# File lib/active_record_cte/relation/query_methods.rb, line 13 def with_recursive(query) return self if query.blank? relation = clone relation.is_recursive = true relation.with_values << query.flatten relation end