ActiveRecord で実行される sql を確認する
ActiveRecord で実行される sql を確認したい場合、 #to_sql
メソッドが利用できます。
# このリレーションでレコードを読み込む場合に実行される SQL を文字列で取得する p Blog.joins(:articles).where(articles: { name: "hoge" }).to_sql # => "SELECT \"blogs\".* FROM \"blogs\" INNER JOIN \"articles\" ON \"articles\".\"blog_id\" = \"blogs\".\"id\" WHERE \"articles\".\"name\" = 'hoge'"
また、 puts
で出力する場合は "
はエスケープされないのでより読みやすくなります。
puts Blog.joins(:articles).where(articles: { name: "hoge" }).to_sql # => SELECT "blogs".* FROM "blogs" INNER JOIN "articles" ON "articles"."blog_id" = "blogs"."id" WHERE "articles"."name" = 'hoge'