2017-04-13 31 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