私は現在以下のモデルを持っています:MinorCategory> Product> Review ビューでは、最もレビューの少ない12 MinorCategoriesを表示します。このビューは非常に応答が遅く、クエリをどのように行うかは問題です。子どもの子供の数でモデルを並べ替える速やかな方法
class MinorCategory < ActiveRecord::Base
has_many :products
has_many :reviews, through: :products
...
def count_reviews
self.reviews.count
end
...
end
class Review < ActiveRecord::Base
belongs_to :product, touch: true
...
end
class HomeController < ApplicationController
@categories = MinorCategory.all.sort_by(&:count_reviews).reverse.take(12)
end
だから、基本的にそれである:ここでは
は私の現在のコードです。ビュー自体では、各@categoriesを調べていくつかのことを表示しますが、コントローラのクエリは遅いと思われます。
SELECT COUNT(*)INNERは "レビュー" "product_idの" = "製品"、 "ID" WHERE "製品" "minor_category_id" ON "製品" を登録しよう "レビュー" FROM =:天窓から。。。? ... avg 472ms
私はSQLやアクティブなレコードではうまくいかず、Ruby on Railsではかなり新しいです。私は数時間かけて他の方法を試してみましたが、私はそれらを働かせることができないので、私はここでチェックすると思った。
あらかじめありがとうございます。