こんにちは。
現在、サイトの表示速度を調べてみるとやたらと遅いことが判明した。
画像も使っていないのに、なんでこんなに遅いんだ・・・って思ったら、大量にsqlが発行されていることがわかりました。
モデルとしては、次のようになっております。
Postモデルが、Cheer・Sympathyモデルの親になっています。
こちらから、応援数、共感数を得るという風にviewを表示しています。
Postモデル
class Post < ActiveRecord::Base has_many :cheers has_many :sympathies end
Cheerモデル
class Cheer < ActiveRecord::Base belongs_to :post end
Symapthyモデル
class Sympathy < ActiveRecord::Base belongs_to :grumble end
indexのViewの表示方法
- posts.each do |post| post.cheers.count post.sympathies.count
Post contorller
def index @posts = Post.all end
sqlの中身
SELECT COUNT(*) FROM "cheers" WHERE "cheers"."post_id" = ? SELECT COUNT(*) FROM "sympathies" WHERE "cheers"."post_id" = ?
これが中身ごとに大量に発行されるので、発行回数を抑えるか、より早いsqlに変更したいです。
何かいい方法はありますでしょうか?
よろしければご教授をお願いします。
追記事項
ruby 2.2.3 rails 4.2.5
計測ツール
rack-mini-profiler
調べたこと
includesで事前に呼び込むようにする。 効果はありませんでした。 使い方が間違えていると思います。 gemのbulletにも注意されました。 - posts.includes(:cheers, sympathies).each do |post| post.cheers.count post.sympathies.count
試したことは上記内容になります。
回答1件
あなたの回答
tips
プレビュー