🖥

ActiveModelSerialize で has_many の N+1 SQLクエリを防止するために eager_load する例 (

2020/03/30に公開

Controller

class UsersController < ActiveController
  def index
    # render json: User.eager_load(:includes).all
    render json: User.eager_load(:books).all
  end
end

Serializer

class UserSerializer < ActiveModel::Serializer
  attributes :id,
             :name

  has_many :books
end

NOTE

途中 eager_load / includes が効かないような気がして gem も試したのだが、効かないというのは気のせいだった。

ams_lazy_relationships は Star数は少ないが includes のちょっとした問題点を解決してくれそうなgem?
httpリクエスト単位でのキャッシュや、もっと長いキャッシュを実現してくれそうな気もする。

Bajena/ams_lazy_relationships: ActiveModel Serializers addon for eliminating N+1 queries problem from the serializers.

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/3056

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2020-03-30

Discussion