如何在进行 rails 查询的时候输出sql

在 Ruby on Rails 中,如果你想查看执行的 SQL 语句,可以通过以下几种方法来实现。

在 Ruby on Rails 中,如果你想查看执行的 SQL 语句,可以通过以下几种方法来实现。

方法1: 启用 Rails 日志

Rails 默认会在日志中打印出所有执行的 SQL 查询。如果你是在开发环境中运行代码,日志会自动输出到控制台中。可以这样查看执行的 SQL:

customer = Customer.find(10)

在控制台中,你会看到类似如下的 SQL 输出:

Customer Load (0.2ms)  SELECT  "customers".* FROM "customers" WHERE "customers"."id" = ? LIMIT 1  [["id", 10]]

方法2: 使用 to_sql 方法

你可以在 ActiveRecord 查询构建时使用 to_sql 方法来获取对应的 SQL 语句:

sql = Customer.where(id: 10).to_sql
puts sql

输出的 SQL 会是类似这样的:

SELECT "customers".* FROM "customers" WHERE "customers"."id" = 10

方法3: 使用 ActiveRecord::Base.logger 临时记录

如果你想在任意环境下手动打印 SQL,可以启用 ActiveRecord::Base.logger,例如:

ActiveRecord::Base.logger = Logger.new(STDOUT)
customer = Customer.find(10)

这样每次执行 SQL 时都会将其打印到标准输出中。

方法4: 使用 debug 方法

你还可以使用 debug 方法来打印 SQL:

Customer.find(10).tap { |customer| Rails.logger.debug customer.inspect }

这些方法可以帮助你在运行时查看 SQL 查询。