2013-09-05 79 views
0

我有我保存到數據庫中的JSON飼料,數據陣列內的JSON子陣列,有可能是一個數組的屬性:解析和保存的Rails

{ 
    "reports": [ 
     { 
     "name1":"val1", 
     "name2":"val2", 
     "sub": [ 
      {"x":9,"y":-8,"z":134}, 
      {"x":10,"y":-7,"z":136} 
     ] 
     } 
    ] 
} 

的子數組值將被保存到它自己的表中,所以我的問題是:如何輕鬆地插入父記錄,獲取新創建的記錄的標識,然後保存子數組記錄?

這是我到目前爲止,但正如你所猜測的,子數組值的ID是零。

rpts = metrics['reports'] 
saved_reports = Report.create rpts do |r| 
    if (r.sub != nil) then 
     SubReport.create r.sub do |a| 
     # How do I get the ID of the parent record? 
     a.report_id = r.id 
     end 
    end 
end 

感謝您的幫助。

+0

什麼只是保存報告,然後再檢查該子陣列中的'如果saved_reports.save'塊在那裏創建? –

+0

這將工作,如果父母只有一個記錄,但父母也是一個數組,所以我插入多個項目。我如何最好地解決與子陣列的父母?我會再次通過saved_reports循環回去嗎? –

回答

1

根據有多少屬性報表有,也許會有這樣的實用

rpts = metrics['reports'] 
rpts.each do |r| 
    report = Report.new name1: r.name1, name2: r.name2 
    if report.save && !r.sub.nil? 
    # save sub report here 
    end 
end 
+0

這個伎倆。謝謝! –