2017-12-06 1 views
0

をクリーンアップします、私はイベントの何百万を持っていると私はトン1 + Nのクエリを見てい私はカレンダーのページが読み込ま呼び出されるGETメソッド持つN + 1のRails関係のクエリ

def get_events 
    @events.select {|event| event.task.present? }.each do |event| 
    target_contact = event.task.primary_contact 
    owner = event.task.task_followers.where(owner: true).first.follower 
    events << { id: event.id, title: event.title, contact: target_contact, owner: owner } 
    end 
    render json: events.to_json 
end 

をそれは個々の出来事と関係を読み込むためです。私はRailsがそのようなクエリを排除するインクルードメソッドを提供していることを知っているしかし、インクルードメソッドはシンボル引数を取るだけです:

Event.includes(:task) 

そして私はincludeメソッドを使ってjson応答を構築することはできないと思います。

class Event < ActiveRecord::Base 
    belongs_to :task 
end 

class Task < ActiveRecord::Base 
    has_many :task_followers, dependent: :destroy 
end 

任意のアイデア:

ここでは関係がありますか?

答えて

0

次のようなネストされた団体読み込むことができます:私はまだJSONオブジェクトをロードする必要が

Event.includes(task: [task_followers: :follower]) 
+0

を。したがって、私はまだそれぞれを呼び出さなければならないでしょう。あなたはどうしますか? – Donato

+0

'@ events'をどこに設定しても、上記の' includes'呼び出しを追加する場所であれば、上のコードがうまくいくはずです。 –

関連する問題