假设您正在Rails中实现REST API。在提供集合时,您可能只希望包含一些属性:
/people
但是在提供单个资源时,您要包括所有属性:
/people/1
我看不到如何使用ActiveModel :: Serializers来做到这一点,因为这些示例都使用了一种模式,即为每个模型定义一个序列化器(使用标准命名约定),并让AMS在执行操作时自动在控制器中使用正确的序列化器:
render json: @people
要么:
render json: @person
为避免将视图关注点混入模型(通过序列化的变体),请使用视图为每个操作呈现JSON,就像我们对HTML所做的一样。
jbuilder和rabl都很好地满足了此数据模板需求。
*2013年12月16日 *更新 :ActiveModelSerializers库确实支持为一个模型定义多个序列化器,如@phaedryx稍后通过使用自定义序列化器回答。