Outlet.rb:リファクタリングとRailsでクエリを改善
def latest_reports
weekly_reports.limit(10)
end
Outlet_controller.rb:index.slim
@all_outlets = Outlet.includes(:weekly_reports)
@search = @all_outlets.search(params[:q]) # load all matching records
@outlets = @search.result.order("created_at DESC").page(params[:page])
アウトレット/:
- @outlets.each do |outlet|
tr
td= link_to outlet.name, outlet_path(outlet)
th
ul.reports
li class="#{'done' if outlet.monitored_today}"
th
ul.reports
- for report in outlet.latest_reports
li class="#{'done' if report.quota_met}"= report.times_monitored
私理由はわかりませんが、これはいくつかの異なるクエリとしてそれを読み込みます。コントローラのインクルードが正しくない(モデルのメソッドを使用しているため)ので、私はかなり確信しています。
誰かがこれを改善するのを助けることができたら、私は非常に感謝しています:)。
注::私はPostgreSQLの
にアップデートを開発しています完全なコントローラのアクションを投稿。あなたは
Model1.includes :model2
を使用する場合は、レール3に
あなたのモデルコードを関係 – Amar
と共有することができますあなたのビューでは '@ outlet 'を使用しますが、コントローラでは' @ all_outlets'を設定します、それは何ですか? –
私は宝石「ransack」を使って検索していますが、私はちょうどこれを上に更新しましたので、私が何を話しているか見ることができます。 – Ammar