rails で ActiveModelSerializers から PankoSerializer に移行する手順を備忘録として残しておく
※今回のは、単純な serializer のみのため、panko_serializer について検証が必要

環境

  • ruby: 3.0.5
  • rails: 6.1.7
  • active_model_serializers: 0.10.13
  • panko_serializer: 0.7.9

実際のソース

[Gemfile]

- gem 'active_model_serializers'
+ gem 'panko_serializer'

[serializer]

継承するクラスを変更

- class Book::ListSerializer < ActiveModel::Serializer
+ class Book::ListSerializer < Panko::Serializer
  attributes(
    :id,
    :title,
    :summary,
    :restrict,
    :to_favorite_registered_count
  )

  def restrict
    Book.restricts[object.restrict]
  end
end

[controller]

each_serializer を使用する場合

  def index
    @books = Book.all

    - render json: @books, each_serializer: Book::ListSerializer
    + render json: Panko::ArraySerializer.new(@books, each_serializer: Book::ListSerializer).to_json
  end

単一の serializer を使用する場合

  def show
    @book = Book.find(params[:id])

    - render json: @book, serializer: BookSerializer
    + render json: BookSerializer.new.serialize_to_json(@book)
  end

性能比較について

参考 を参照