class Arel::Visitors::ToSql

Public Instance Methods

column_cache() click to toggle source
# File lib/ransack/adapters/active_record/3.0/compat.rb, line 123
def column_cache
  @column_cache ||= Hash.new do |hash, key|
    hash[key] = Hash[
      @engine.connection
      .columns(key, "#{key} Columns")
      .map { |c| [c.name, c] }
    ]
  end
end
column_for(attr) click to toggle source
# File lib/ransack/adapters/active_record/3.0/compat.rb, line 116
def column_for attr
  name    = attr.name.to_s
  table   = attr.relation.table_name

  column_cache[table][name]
end
visit_Arel_Nodes_And(o) click to toggle source
# File lib/ransack/adapters/active_record/3.0/compat.rb, line 149
def visit_Arel_Nodes_And o
  o.children.map { |x| visit x }.join(Ransack::Constants::SPACED_AND)
end
visit_Arel_Nodes_InfixOperation(o) click to toggle source
# File lib/ransack/adapters/active_record/3.0/compat.rb, line 133
def visit_Arel_Nodes_InfixOperation o
  "#{visit o.left} #{o.operator} #{visit o.right}"
end
visit_Arel_Nodes_NamedFunction(o) click to toggle source
# File lib/ransack/adapters/active_record/3.0/compat.rb, line 137
def visit_Arel_Nodes_NamedFunction o
  "#{
    o.name
    }(#{
    o.distinct ? Ransack::Constants::DISTINCT : Ransack::Constants::EMPTY
    }#{
    o.expressions.map { |x| visit x }.join(Ransack::Constants::COMMA_SPACE)
    })#{
    o.alias ? " AS #{visit o.alias}" : Ransack::Constants::EMPTY
    }"
end
visit_Arel_Nodes_Not(o) click to toggle source
# File lib/ransack/adapters/active_record/3.0/compat.rb, line 153
def visit_Arel_Nodes_Not o
  "NOT (#{visit o.expr})"
end
visit_Arel_Nodes_Values(o) click to toggle source
# File lib/ransack/adapters/active_record/3.0/compat.rb, line 157
def visit_Arel_Nodes_Values o
  "VALUES (#{
  o.expressions.zip(o.columns)
  .map { |value, attr|
    if Nodes::SqlLiteral === value
      visit_Arel_Nodes_SqlLiteral value
    else
      quote(value, attr && column_for(attr))
    end
  }
  .join(Ransack::Constants::COMMA_SPACE)
  })"
end