小编典典

如何使用ActiveModel :: Serializers为同一模型实现多个不同的序列化器?

json

假设您正在Rails中实现REST API。在提供集合时,您可能只希望包含一些属性:

/people

但是在提供单个资源时,您要包括所有属性:

/people/1

我看不到如何使用ActiveModel ::
Serializers来做到这一点,因为这些示例都使用了一种模式,即为每个模型定义一个序列化器(使用标准命名约定),并让AMS在执行操作时自动在控制器中使用正确的序列化器:

render json: @people

要么:

render json: @person

阅读 271

收藏
2020-07-27

共1个答案

小编典典

为避免将视图关注点混入模型(通过序列化的变体),请使用视图为每个操作呈现JSON,就像我们对HTML所做的一样。

jbuilderrabl都很好地满足了此数据模板需求。

*2013年12月16日 *更新ActiveModelSerializers库确实支持为一个模型定义多个序列化器,如@phaedryx稍后通过使用自定义序列化器回答。

2020-07-27