ruby-on-rails - 如何获取 ActiveRecord 在 Ruby on Rails 中执行的最后一个 SQL 查询?

标签 ruby-on-rails ruby activerecord

我正在寻找类似 CodeIgniter 的东西:

$this->db->last_query();

( http://codeigniter.com/user_guide/database/helpers.html )

最佳答案

据我所知,访问查询列表并不容易。尽管如此,您还是可以轻松访问它们,创建一个 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/

相关文章:

ruby-on-rails - 如何使用 Capybara 和 Selenium 测试某个项目是否已从页面中删除?

css - 如何在 Susy 网格元素中执行预定义的 CSS 文件?

ruby-on-rails - rails ActiveRecord : Automatically Alias/Append Suffix?

ruby-on-rails - 在 RESTful 设计中从单个 Controller 获取多个模型

arrays - 将元素添加到新数组 Ruby

ruby-on-rails - Rails ActiveRecord 在控制台中找到

Ruby Mechanize 登录不工作

ruby - github gems 是否不如 ruby​​forge gems 稳定?

ruby-on-rails - 如何获取具有 min has_many 记录的记录(加入数据)

MySQL Rails REGEXP 不能使用反斜杠