Я хотел скопировать и насыпные данные вставки в базу данных (с помощью bulk_insert GEM), поэтому я попытался следующее:Объемные данные вставки в рельсах DB с ассоциациями
@questionnaires = Questionnaire.where(:id => params[:id])
@new_sections = []
@questionnaires.includes(:sections, :questions).each do |questionnaire|
questionnaire.sections.each do |section|
s = section.dup
s.questionnaire_id = nil
new_section = Section.new(s.attributes.reject{|k, v| ["id", "created_at", "updated_at"].include?(k)})
questions = []
section.questions.each do |question|
q = question.dup
q.section_id = nil
questions << q.attributes.reject{|k, v| ["id", "created_at", "updated_at"].include?(k)}
end
new_section.questions.build(questions)
@new_sections << new_section
end
end
Теперь здесь @new_sections
имеет все разделы с попутным вопросов, но не сохраняется.
СОХРАНЕНИЕ
Section.transaction do
Section.bulk_insert values: @new_sections.map(&:attributes)
end
Но это спасает только разделы, но не это ассоциации. Как я могу сохранить ассоциации (вопросы).
EDIT
Теперь, я наткнулся на этот https://github.com/zdennis/activerecord-import/wiki GEM, и я пытаюсь на примере Multi-Level, еще вопросы не сохраняются. Есть идеи?
У меня уже есть ;-) – Abhi
@Abhi Вы уже решили проблему? Или у вас есть NestedAttributes? Если последние вы взглянули на имя массива 'questions_attributes' вместо' questions'? Если первый, пожалуйста, закройте вопрос/примите ответ/опубликуйте собственное решение? – Negnar