当前位置: 首页 > 面试题库 >

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

汤乐家
2023-03-14
问题内容

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

/people

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

/people/1

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

render json: @people

要么:

render json: @person

问题答案:

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

jbuilder和rabl都很好地满足了此数据模板需求。

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



 类似资料:
  • 我有一个特点,它是由同一个结构以不同的方式实现的。为了实现这一点,我有不同的结构,它们有不同的实现。对于抽象,我将这些结构称为A-Z: 有没有其他方法来实现这一点,以便结构的每个实例都有一个不同的trait实现,或者创建一个新结构是最好的方法? 我不熟悉编译语言。我所做的大部分工作都是使用Python和TypeScript。

  • 这是保存过程开始的地方。我定义了一个抽象方法,以后在运行时已知的类中实现。 这里我知道的类型,我想调用一个方法。 所以问题是ConfigurationPersistenceHelper中的方法。运行此方法时,配置中得到的不是而是。 我知道我可以在每个具体应用程序类的方法中实现反序列化器逻辑。但这会导致大量重复代码。这是我目前的解决方案。 此外,我知道我可以将类型从(其中类型在运行时仍然可用)传递给

  • 问题内容: 我有以下接口,我想在类中多次实现: 现在,我希望能够通过以下方式实现此接口: 但是,这给了我错误:在行上: 是否可以使用不同的泛型两次实现接口?如果不是,那么我在这里可以做的下一步工作是什么? 问题答案: 您需要使用内部或匿名类。例如:

  • 我希望提供两种不同的序列化程序,同时又能够从的所有功能中获益: 当查看对象列表时,我希望每个对象都有一个重定向到其详细信息的url,并且使用目标模型的显示所有其他关系; 示例: 查看对象的详细信息时,我希望使用默认的 示例: 我设法通过以下方式使这一切如我所愿发挥作用: serializers.py views.py 基本上,我会检测用户何时请求列表视图或详细视图,并根据需要更改。我对这段代码并不

  • 本文向大家介绍PHP 不同类型的序列化,包括了PHP 不同类型的序列化的使用技巧和注意事项,需要的朋友参考一下 示例 生成值的可存储表示形式。 这对于存储或传递PHP值而不丢失其类型和结构很有用。 要再次将序列化的字符串转换为PHP值,请使用unserialize()。 序列化字符串 序列化双精度 序列化浮点数 浮点数被序列化为双打。 序列化整数 序列化布尔值 序列化null 序列化数组 序列化对