class Relationize::PgRelationizer

Constants

DEFAULT_TYPES

Public Instance Methods

to_s() click to toggle source
# File lib/relationize/pg_relationizer.rb, line 20
def to_s
  types = oriented_types
  columns = @columns.map(&method(:identifer_quote))
  tuples = @tuples.map { |tuple| "(#{tuple.map { |v| to_text_literal(v) }.join(', ')})"}.join(", ")
  expressions = columns.zip(types).map { |(col, type)| "#{col}::#{type}" }.join(', ')
  "SELECT #{expressions} FROM (VALUES#{tuples}) AS #{identifer_quote(@name)}(#{columns.join(', ')})"
end

Private Instance Methods

to_text_literal(obj) click to toggle source
# File lib/relationize/pg_relationizer.rb, line 30
def to_text_literal(obj)
  obj.to_s.gsub(/'/, "''").tap do |s|
    break "'#{s}'"
  end
end