2013-09-05 3 views
0

у меня есть фид JSON, что я экономлю в базу данных, а также в пределах массива данных, есть свойство, что это массив:Синтаксические и сохранение JSON вложенного массива в Rails

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

значения sub-array будут сохранены в свою собственную таблицу, поэтому мой вопрос: как я могу легко вставить родительские записи, получить личность вновь созданной записи, а затем сохранить записи подматрицы?

Это то, что у меня есть до сих пор, но, как вы могли догадаться, идентификатор значений sub-array равен nil.

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

Это будет работать, если родительский элемент был только одной записью, но родитель также является массивом, поэтому я вставляю несколько элементов. Как лучше всего решить родительский вопрос с помощью подмассивов? Повторю ли я снова цикл через save_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

Это сделало трюк. Благодаря! –

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