Есть ли способ увидеть исходный SQL, который будет генерировать выражение Sequel?

Скажем, у меня есть выражение Sequel:

db.select(:id).from(:some_table).where(:foo => 5)

Есть ли способ получить строку SQL, которая будет генерироваться (т.е. "SELECT id FROM some_table WHERE foo = 5")? Я заметил, что вызов inspect или to_s в результате указанного выше выражения включает в себя сгенерированный SQL, но не уверен, как обращаться к нему напрямую.

А как насчет выражений Sequel, которые не возвращают набор данных, например:

db.from(:some_table).update(:foo => 5)

Можно ли увидеть SQL из этого до его выполнения?

Ответ 1

Вы можете вызвать 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