How to implement multiple different serializers for same model using ActiveModel::Serializers?

前端 未结 4 1685
不知归路
不知归路 2020-12-07 12:00

Let\'s say you\'re implementing a REST API in Rails. When serving a collection, you might want to only include a few attributes:

/people

B

4条回答
  •  难免孤独
    2020-12-07 12:08

    You can have multiple serializers for the same model, e.g.

    class SimplePersonSerializer < ActiveModel::Serializer
      attributes :id, :name
    end
    

    and

    class CompletePersonSerializer < ActiveModel::Serializer
      attributes :id, :name, :phone, :email
    end
    

    simple info for people in one controller:

    render json: @people, each_serializer: SimplePersonSerializer
    

    complete info for people in another:

    render json: @people, each_serializer: CompletePersonSerializer
    

    simple info for a single person:

    render json: @person, serializer: SimplePersonSerializer
    

    complete info for a single person:

    render json: @person, serializer: CompletePersonSerializer
    

提交回复
热议问题