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
性能比較について
参考 を参照