如何在进行 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 查询。