我正在寻找类似 CodeIgniter 的东西:
$this->db->last_query();
最佳答案
据我所知,访问查询列表并不容易。尽管如此,您还是可以轻松访问它们,创建一个 super 简单的记录器。
如果您打开 ActiveRecord::ConnectionAdapters::AbstractAdapter
类,您将看到一个名为 log 的方法。在每个查询上调用此方法以记录语句。默认情况下,它使用 Rails 记录器记录所有语句。
你可以做类似的事情
ActiveRecord::ConnectionAdapters::AbstractAdapter.class_eval do
attr_reader :last_query
alias_method_chain :log, :last_query
def log_with_last_query(sql, name, &block)
@last_query = [sql, name]
log_without_last_query(sql, name, &block)
end
end
现在您可以使用
获取查询ActiveRecord::Base.connection.last_query # => ...
关于ruby-on-rails - 如何获取 ActiveRecord 在 Ruby on Rails 中执行的最后一个 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1090801/