前提・実現したいこと
Railsコントローラ内のindexアクションで、render json
でto_json
を使用している箇所がN+1問題となってしまっています。
この部分を、解消させたいです。
お手数ですが、どなたかわかる方がいらっしゃいましたら、アドバイスを頂けますと幸いです。
該当のソースコード
Ruby
1class Api::V1::QuestionnairesController < ApplicationController 2 3 def index 4 @questionnaires = Questionnaire.all.includes(:user).order(created_at: :desc) 5 6 render json: @questionnaires.to_json(include: :questionnaire_choices) ##ここです 7 end 8 ・ 9 ・ 10 ・ 11 def my_questionnaires 12 @my_questionnaires = Questionnaire.where(user_id: params[:user_id]).order(created_at: :desc) 13 14 render json: @my_questionnaires.to_json(include: :questionnaire_choices) ##ここです 15 end 16end
試したこと
includes
を入れて先にキャッシュしておくのは分かったのですが、どこにincludes
を埋め込めばいいか分かりません。
下記のように試しにincludes
を入れてみましたが、データが引っ張ってこれず、エラーとなってしまいました。
Ruby
1class Api::V1::QuestionnairesController < ApplicationController 2 3 def index 4 @questionnaires = Questionnaire.all.includes(:user).order(created_at: :desc) 5 6 render json: @questionnaires.includes([:questionnaire_choices]) 7 end 8 ・ 9 ・ 10 ・ 11 def my_questionnaires 12 @my_questionnaires = Questionnaire.where(user_id: params[:user_id]).order(created_at: :desc) 13 14 render json: @my_questionnaires.includes([:questionnaire_choices]) 15 end 16end
補足情報(FW/ツールのバージョンなど)
rails 6.0.3.4
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。