diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-08-12 15:40:58 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-08-12 15:40:58 -0700 |
commit | d827d6e9ee10fa0906b7b3cfd191e6f9ac5d6b08 (patch) | |
tree | 7ed24e39bc417a0ba6c2f344cc6b616c35c2a8e0 /lib/arel/visitors | |
parent | 199d17b2dbb56000098a0372f0c64ce0aa3711ce (diff) | |
download | rails-d827d6e9ee10fa0906b7b3cfd191e6f9ac5d6b08.tar.gz rails-d827d6e9ee10fa0906b7b3cfd191e6f9ac5d6b08.tar.bz2 rails-d827d6e9ee10fa0906b7b3cfd191e6f9ac5d6b08.zip |
to_sql visitor started
Diffstat (limited to 'lib/arel/visitors')
-rw-r--r-- | lib/arel/visitors/to_sql.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb new file mode 100644 index 0000000000..ba92ca7ef1 --- /dev/null +++ b/lib/arel/visitors/to_sql.rb @@ -0,0 +1,38 @@ +module Arel + module Visitors + class ToSql + def initialize engine + @engine = engine + @connection = nil + end + + def accept object + @connection = @engine.connection + visit object + end + + private + def visit_Arel_Nodes_Equality o + "#{visit o.left} = #{visit o.right}" + end + + def visit_Arel_Attributes_Integer o + "#{quote_table_name o.relation.name}.#{quote_column_name o.name}" + end + + def visit_Fixnum o; o end + + def visit object + send :"visit_#{object.class.name.gsub('::', '_')}", object + end + + def quote_table_name name + @connection.quote_table_name name + end + + def quote_column_name name + @connection.quote_column_name name + end + end + end +end |