Railsでransackを使って、検索をしております。
親テーブル1つに対して、子テーブルを3つLeft joinさせています。
ログを見ると沢山のSQL文が発行されているようなので、恐らく、N+1問題なのではと想定しているのですが、このロジックであれば、N+1問題は起こるものでしょうか。
def index @q = Task.joins(:enduser, :motouke, :userkey).select("tasks.*, endusers.*, motoukes.*, userkeys.* ") @tasks = @q.result(distinct: true).page(params[:page]).per(20) end
また、SQL文はどのタイミングで発行されるものなのでしょうか。
下記のように、処理の前後にloggerを設定したのですが、この間にはSQL文が1つも流れていないようです。それは何故でしょうか?
def index logger.debug("index メソッド str") @q = Task.joins(:enduser, :motouke, :userkey).select("tasks.*, endusers.*, motoukes.*, userkeys.* ") @tasks = @q.result(distinct: true).page(params[:page]).per(20) logger.debug("index メソッド end") end
回答2件
あなたの回答
tips
プレビュー