2017-04-13 59 views
0

我想使用活动模型序列化器序列化JSON。问题在于嵌套需要基于某些标准在相同的模型上,例如使用活动模型序列化器根据条件嵌套相同模型

我的模型是

name | code | description  | group_name | group_code 
-------------------------------------------------------- 
adhir | ad | some desc  | grp1  | g1 
aima | ai | some other desc | grp1  | g1 

我想要的JSON看起来像

[ 
    { 
    group_name: grp1, 
    group_code: g1, 
    values: [ 
     { 
     name: adhir, 
     code: ad, 
     desc: some desc 
     }, 
     { 
     name: aima, 
     code: ai, 
     desc: some other description 
     } 
    ] 

所有帮助表示赞赏

回答

0

我不知道有可能在普通有源模型来实现-serializers。您可以将它与简单的JSON代相结合。而且,你可以在地图中插入你自己的序列化程序。

Category 
    .all 
    .group_by { |category| [category.group_name, category.group_code] } 
    .map do |key, records| 
    { 
    group_name: key[0], 
    group_code: key[1], 
    values: records.map { |record| CategoriesSerializer.new(record, {}).attributes } 
    } 
end 

随着串行:

class CategoriesSerializer < ActiveModel::Serializer 
    attributes :name, :code, :description 
end