Rails ActiveModel Serializer和合并方法

时间:2017-05-27 22:12:22

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

我为我的模型定义了一个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 Serializer。相反,他们只是序列化他们所有的属性。

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

1 个答案:

答案 0 :(得分: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
)