module ActiveRecord::QueryMethods
Public Instance Methods
build_arel(aliases = nil)
Also aliased as: build_arel_without_extensions
Alias for: build_arel_with_extensions
build_arel_with_extensions(aliases = nil)
click to toggle source
# File lib/postgres_with/active_record/relation/query_methods.rb, line 78 def build_arel_with_extensions(aliases = nil) arel = build_arel_without_extensions(aliases) with_statements = with_values.flat_map do |with_value| case with_value when String with_value when Hash with_value.map do |name, expression| case expression when String select = Arel::Nodes::SqlLiteral.new "(#{expression})" when ActiveRecord::Relation, Arel::SelectManager select = Arel::Nodes::SqlLiteral.new "(#{expression.to_sql})" end if name.to_s.start_with?('_materialized_') name = name.gsub('_materialized_', '') Arel::Nodes::AsMaterialized.new Arel::Nodes::SqlLiteral.new("\"#{name}\""), select else Arel::Nodes::As.new Arel::Nodes::SqlLiteral.new("\"#{name}\""), select end end when Arel::Nodes::As with_value end end unless with_statements.empty? if recursive_value arel.with :recursive, with_statements else arel.with with_statements end end arel end
Also aliased as: build_arel
with(opts = :chain, *rest)
click to toggle source
# File lib/postgres_with/active_record/relation/query_methods.rb, line 59 def with(opts = :chain, *rest) if opts == :chain WithChain.new(spawn) elsif opts.blank? self else spawn.with!(opts, *rest) end end