2014-11-21 101 views
0

我有這些模型:Rails 4 ActiveRecord - 如何看到如何解釋數據庫查詢?

老師

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?

預先感謝您。

+0

您是否嘗試將該代碼粘貼到Rails控制檯中? – 2014-11-21 11:26:59

+1

試試'active_teachers.to_sql' – apneadiving 2014-11-21 11:28:05

回答

5

要想從你輸入查詢的詳細信息,你可以這樣做:

query.to_sql 
query.explain 
+0

哦完美,不知道這一個。 – user984621 2014-11-21 11:35:58

0

您可以使用

ActiveRecord::Base.logger = Logger.new STDOUT 

和運行軌道控制檯查詢。因此,它打印出控制檯中的sql查詢

相關問題