Массовая вставка ActiveRecord с has_one - PullRequest
0 голосов
/ 20 февраля 2020

Вы когда-нибудь решали проблему массовой вставки записей с вложенной ассоциацией? (с рельсами insert_all или с импортированным гемом) пример:

Dog.import!(array_of_dogs)

и

Dog.insert_all(array_of_dogs)

не будут работать, если у Собаки есть ассоциация владельца как

has_one :owner, class_name: Person

и ожидает сохранения всех собак и всех их владельцев.

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Вам нужно будет вставить ассоциации отдельно.

Я объяснил, как я решил эту проблему в своем блоге - https://medium.com/@muralidharanashish / массовый импорт-в-ruby -on-rails- 8546fed74f4

0 голосов
/ 20 февраля 2020

У вас есть две возможности.

  1. Вы удаляете все ограничения, вставляете все данные и добавляете ограничение в конце. Это работает, потому что во время резервного копирования все ограничения работали и будут делать это после восстановления

  2. , вы можете вставить только одну таблицу за раз, поэтому вы создаете модель ER своей базы данных посмотрите, какие таблицы должны быть созданы в первую очередь, чтобы все таблицы, находящиеся в иерархии выше, могли быть созданы с помощью партнерской таблицы, которая уже была создана без использования. И так до тех пор, пока не дойдете до конца. Модель ER не является абсолютно необходимой, но в больших базах данных с большим количеством таблиц она помогает поддерживать порядок, и с помощью правильной программы вы можете перемещать таблицы, чтобы найти правильный порядок восстановления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...