環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16
状況
serializerを指定するところで下記のエラーが発生。
NoMethodError:
undefined method `read_attribute_for_serialization' for #<ActiveRecord::Associations::CollectionProxy []>
def show
posts = ...
render json: posts,
serializer: HogePostSerializer
end
解決法
serializer
ではなくeach_serializer
に変更する。
大体の場合each_serializer
はindex
アクションで使うイメージがあったし、ドキュメントにもそう書いてあった
To specify which serializer to use on individual items in a collection (i.e., an index action), use each_serializer:
が、それにとらわれず何をシリアライズしたいかをよく考える。
def show
posts = ...
render json: posts,
each_serializer: HogePostSerializer
end
参考