说我有一个续集表达式,如:
db.select(:id).from(:some_table).where(:foo => 5)
有没有办法获得它将生成的SQL字符串(即"SELECT id FROM some_table WHERE foo = 5"
)?我注意到,对上面表达式的结果调用inspect
或to_s
包括生成的SQL,但不确定如何直接访问它。
那些不返回数据集的续集表达式如何:
db.from(:some_table).update(:foo => 5)
在执行之前是否可以从中查看SQL?
答案 0 :(得分:24)
您可以在数据集上调用sql
:
db.select(:id).from(:some_table).where(:foo => 5).sql # => "SELECT `id` FROM `some_table` WHERE (`foo` = 5)"
对于更新查询,您可以执行以下操作:
db.from(:some_table).update_sql(:foo => 5) # => "UPDATE `some_table` SET `foo` = 5"
一些类似的有用方法:
insert_sql
delete_sql
truncate_sql