1

あなたがこれを持っているとしましょう:

class Event < ActiveRecord::Base
  has_many :orders
end

class Order < ActiveRecord::Base
  belongs_to :event
end

一部の管理インターフェースでは、次のデータポイントを使用してテーブルをレンダリングしたいと思います。

イベント名、過去2週間の合計注文数、合計注文数

「過去2週間」はcreated_at>2.weeks.agoで作成できます

最初の20個のイベントを効率的にクエリして、このデータを表示するにはどうすればよいですか?つまり、このページでN+1クエリを実行したくありません。

イベントは現在ThinkingSphinxから出ています。また、Redisが役立つ場合は、自由に使用できます。

4

1 に答える 1

0

ActiveRecord で熱心な読み込みを使用できます。クエリを N+1 から 2 つのクエリに減らすことができます。

EventsController に以下を追加できます。

def index
  @events = Event.includes(:orders)
end

詳細については、熱心な読み込みに関するドキュメントを参照してください。

于 2012-07-21T01:29:35.437 に答える