2013-07-02 4 views
2

меня ниже выхода из активной записи запросаПреобразовать активная запись результата в объект Json

[{"image_id"=>1, "image_name"=> "image1", action_type"=>"Call", "count"=>2}, 
`{"image_id"=>1, "image_name"=> "image1","action_type"=>"sms", "count"=>1}, 
{"image_id"=>2, "image_name"=> "image2","action_type"=>"sms", "count"=>1} ]` 

Теперь я хочу, чтобы это было преобразовано в объект Json как ниже

{ "1": { "counts": { "call": 2, "sms": 1 } , "title":'image1' }, 
    "2": { "counts": {"sms": 1} , 'title':'image2'}} 
+0

Нет встроенного способа. Кроме того, вы когда-нибудь слышали о нормализации db? –

ответ

1

Проверьте этот код.

@xx = [{"image_id"=>1, "image_name"=>"image1", "action_type"=>"Call", "count"=>2}, {"image_id"=>1, "image_name"=>"image1", "action_type"=>"sms", "count"=>1}, {"image_id"=>1, "image_name"=>"image1", "action_type"=>"sms", "count"=>1}] 
@arr = [] 

@xx.each_with_index do |x, i| 
    @arr << {(i+1).to_s.to_sym => {"counts" => {x["action_type"].to_sym => x["count"]}}} 
end 

respond_to do |f| 
    f.json {render :json => @arr} 
end 
1

Есть два популярных библиотек, оба очень полезны:

Я предпочитаю active_model_serializers, лично. Многие не согласны.

Смежные вопросы