Class: Arel::Visitors::ToSql
- Inherits:
-
Object
- Object
- Arel::Visitors::ToSql
- Defined in:
- lib/squeel/adapters/active_record/3.0/compat.rb
Instance Method Summary collapse
-
#column_cache ⇒ Object
This isn’t really very cachey at all.
- #column_for(attr) ⇒ Object
- #visit_Arel_Nodes_And(o) ⇒ Object
- #visit_Arel_Nodes_InfixOperation(o) ⇒ Object
- #visit_Arel_Nodes_NamedFunction(o) ⇒ Object
- #visit_Arel_Nodes_Not(o) ⇒ Object
- #visit_Arel_Nodes_Values(o) ⇒ Object
Instance Method Details
#column_cache ⇒ Object
This isn’t really very cachey at all. Good enough for now.
97 98 99 100 101 102 103 104 105 |
# File 'lib/squeel/adapters/active_record/3.0/compat.rb', line 97 def column_cache @column_cache ||= Hash.new do |hash, key| Hash[ @engine.connection.columns(key, "#{key} Columns").map do |c| [c.name, c] end ] end end |
#column_for(attr) ⇒ Object
89 90 91 92 93 94 |
# File 'lib/squeel/adapters/active_record/3.0/compat.rb', line 89 def column_for attr name = attr.name.to_s table = attr.relation.table_name column_cache[table][name] end |
#visit_Arel_Nodes_And(o) ⇒ Object
117 118 119 |
# File 'lib/squeel/adapters/active_record/3.0/compat.rb', line 117 def visit_Arel_Nodes_And o o.children.map { |x| visit x }.join ' AND ' end |
#visit_Arel_Nodes_InfixOperation(o) ⇒ Object
107 108 109 |
# File 'lib/squeel/adapters/active_record/3.0/compat.rb', line 107 def visit_Arel_Nodes_InfixOperation o "#{visit o.left} #{o.operator} #{visit o.right}" end |
#visit_Arel_Nodes_NamedFunction(o) ⇒ Object
111 112 113 114 115 |
# File 'lib/squeel/adapters/active_record/3.0/compat.rb', line 111 def visit_Arel_Nodes_NamedFunction o "#{o.name}(#{o.distinct ? 'DISTINCT ' : ''}#{o.expressions.map { |x| visit x }.join(', ')})#{o.alias ? " AS #{visit o.alias}" : ''}" end |
#visit_Arel_Nodes_Not(o) ⇒ Object
121 122 123 |
# File 'lib/squeel/adapters/active_record/3.0/compat.rb', line 121 def visit_Arel_Nodes_Not o "NOT (#{visit o.expr})" end |
#visit_Arel_Nodes_Values(o) ⇒ Object
125 126 127 128 129 130 131 132 133 |
# File 'lib/squeel/adapters/active_record/3.0/compat.rb', line 125 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 ', '})" end |