【问题标题】:Rails 4 ActiveRecord - how to see how is interpreted a database query?Rails 4 ActiveRecord - 如何查看如何解释数据库查询?
【发布时间】:2015-01-19 12:45:09
【问题描述】:

我有这些模型:

老师

class Teacher < ActiveRecord::Base
  has_many :days
end

一天

class Day < ActiveRecord::Base
  belongs_to :teacher
end

并运行这些查询:

  active_teachers = Teacher.joins(:days).where("teacher.id" => found_teachers.pluck(:teacher_id).uniq, "days.day_name" => selected_day)

查询(应该)做什么:found_teachers 是所有重复教师的数组,删除重复并仅选择那些在相应日期上课的教师(selected_day 包含一个字符串,Monday 用于示例)。

因为变量 active_teachers 中的数据量太大,我无法手动逐条记录(而且我不确定我是否正确构建了此查询,它是否完全符合我的需要),我是试图找出这个查询是如何从 ActiveRecord 转换为 SQL 的。

通常我会在运行 Rails 应用程序服务器的终端中看到所有内容,但到目前为止,我没有看到该查询说明。

那么问题来了,我怎样才能看到 ActiveRecord 查询是如何被翻译成 SQL 的呢?

提前谢谢你。

【问题讨论】:

  • 您是否尝试过将该代码粘贴到 Rails 控制台中?
  • 试试active_teachers.to_sql

标签: mysql ruby-on-rails ruby join rails-activerecord


【解决方案1】:

要从您输入的查询中获取详细信息,您可以:

query.to_sql
query.explain

【讨论】:

  • 哦,完美,不知道这个。
【解决方案2】:

你可以使用

ActiveRecord::Base.logger = Logger.new STDOUT

并在 Rails 控制台中运行您的查询。所以它会在控制台中打印出 sql 查询

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多