日記リソースdiaryの一覧をパーシャルでrender(_diary.html.slim
)で出力します。
そのパーシャル内にいいね数(has_many :likes
)を出力する内容となっており、
_diary.html.slim
ruby
1= diary.likes.size
コントローラーにおいては
diaries_controller.rb
ruby
1@diaries = Diary.all.includes(:user, :likes).order(created_at: :desc)
としていますが= render 'diaries'
とする度にSQLが_diary
ごとに以下のように発行されてしまいます。
どのように対処すればいいのでしょうか、Gemは使わないようにしたいです。
ちなみにDockerの開発環境に変えて実行しているので、コンテナをまたぐことによってローカルの頃と比べて、問い合わせによる時間がかかりすぎて気になりました。
(0.7ms) SELECT COUNT(*) FROM `likes` WHERE `likes`.`diary_id` = 35 ↳ app/views/diaries/_unlike.html.slim:4 Rendered diaries/_unlike.html.slim (11.7ms) Rendered diaries/_like_area.html.slim (418.6ms) Rendered diaries/_diary.html.slim (869.4ms) Diary Exists (0.6ms) SELECT 1 AS one FROM `diaries` INNER JOIN `likes` ON `diaries`.`id` = `likes`.`diary_id` WHERE `likes`.`user_id` = 2 AND `diaries`.`id` = 34 LIMIT 1 ↳ app/models/user.rb:89 (0.7ms) SELECT COUNT(*) FROM `likes` WHERE `likes`.`diary_id` = 34 ↳ app/views/diaries/_like.html.slim:4 Rendered diaries/_like.html.slim (9.0ms) Rendered diaries/_like_area.html.slim (346.5ms) Rendered diaries/_diary.html.slim (715.3ms) Diary Exists (0.9ms) SELECT 1 AS one FROM `diaries` INNER JOIN `likes` ON `diaries`.`id` = `likes`.`diary_id` WHERE `likes`.`user_id` = 2 AND `diaries`.`id` = 33 LIMIT 1 ↳ app/models/user.rb:89 (2.4ms) SELECT COUNT(*) FROM `likes` WHERE `likes`.`diary_id` = 33 ↳ app/views/diaries/_like.html.slim:4 Rendered diaries/_like.html.slim (6.0ms) Rendered diaries/_like_area.html.slim (417.7ms) Rendered diaries/_diary.html.slim (907.2ms) Diary Exists (0.6ms) SELECT 1 AS one FROM `diaries` INNER JOIN `likes` ON `diaries`.`id` = `likes`.`diary_id` WHERE `likes`.`user_id` = 2 AND `diaries`.`id` = 32 LIMIT 1
あなたの回答
tips
プレビュー