【问题标题】:Rails ActiveModel Serializer and merge methodRails ActiveModel 序列化器和合并方法
【发布时间】:2017-10-28 13:21:18
【问题描述】:

我为我的模型定义了一个 Active Model Serializer,当我调用 render json 传递单个集合时一切正常,如下所示:

render json: @collection

问题是当我尝试合并不同的属性和集合时,例如:

json_response = service.errors.merge(attribute1: value1)
render json: json_response.merge(collection1: @collection, collection2: @collection2)

当我这样做时,集合不使用定义的 Active Record 序列化器。相反,它们只是序列化所有属性。

如何确保在进行这些合并时,序列化仍使用我为它们定义的 Active Record Serializer?

【问题讨论】:

  • 什么是service 是数据库条目吗?
  • 不,它是一个执行一些计算的类,在控制器内部用作变量。

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord serialization


【解决方案1】:

你可以在渲染之前直接序列化它们:

json_response = service.errors.merge(attribute1: value1)
render json: json_response.merge(
  collection1: ActiveModelSerializers::SerializableResource.new(@collection).as_json, 
  collection2: ActiveModelSerializers::SerializableResource.new(@collection2).as_json
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2013-10-30
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2015-01-25
    相关资源
    最近更新 更多