Ich wollte kopieren und Masseneinfügung Daten in der Datenbank (mit bulk_insert GEM), so habe ich versucht, die folgende:Masseneinsatz von Daten in Schienen DB mit den Verbänden
@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
Nun, hier @new_sections
verfügt über alle Abschnitte mit zugehörigem Fragen, aber wird nicht gespeichert.
SPAREN
Section.transaction do
Section.bulk_insert values: @new_sections.map(&:attributes)
end
Aber das spart nur die Abschnitte, aber es ist Assoziationen nicht. Wie kann ich auch Assoziationen (Fragen) speichern?
EDIT
Nun kam ich auf dieses https://github.com/zdennis/activerecord-import/wiki GEM und ich versuche, das Multi-Level-Beispiel, immer noch Fragen werden nicht gespeichert. Irgendwelche Ideen?
Ich habe es schon ;-) – Abhi
@Abhi haben Sie das Problem bereits gelöst? Oder haben Sie NestedAttributes aktiviert? Haben Sie sich bei letzterem den Array-Namen 'questions_attributes' anstelle von' questions' angesehen? Wenn der ehemalige, bitte schließen Sie die Frage/akzeptieren Sie die Antwort/posten Sie Ihre eigene Lösung? – Negnar