Сохранение данных таблицы соединений при повторном заполнении базы данных

#ruby-on-rails #postgresql #has-and-belongs-to-many #seed

#ruby-on-rails #postgresql #имеет-и-принадлежит-многим #начальное значение

Вопрос:

Я повторно заполняю довольно большую базу данных обновленными статическими данными и обновленными значениями, с которыми взаимодействуют пользователи. Однако я заметил, что повторное заполнение базы данных очищает все таблицы соединений для таблиц Has_and_belongs_to_many (все остальные пользовательские данные и таблицы остаются неизменными).

Кто-нибудь разработал способ обойти это, когда данные будут сохранены при повторном заполнении?

Я использую Rails и Postgresql

Комментарии:

1. Если вы вставляете новые данные как часть вашего повторного заполнения, вам также придется создавать эти ассоциации. Любые ассоциации, оставшиеся до заполнения, концептуально подозрительны: неполные, неправильные и т. Д. Кроме того, когда вы говорите о повторном rake db:drop db:create db:migrate db:seed заполнении, о чем вы говорите? или какая-то ручная загрузка БД?

2. @jaydel Я на самом деле не удаляю таблицы. Я просто записываю данные с rake db:seed помощью . И мой начальный файл для каждой таблицы выглядит так: НАПРИМЕР: Industry.destroy_all , ActiveRecord::Base.connection.execute("TRUNCATE TABLE industries RESTART IDENTITY") . Industry.create(name: 'Accounting') etc

Ответ №1:

Как упоминалось выше, вам нужно будет воссоздать ассоциации. Вы можете сделать это довольно просто в своем начальном файле.

Вы также можете заглянуть в начальный дамп gem. Это позволит вам сделать снимок ваших отношений HABTM, а затем экспортировать их в ваш db/seeds.rb (или любой другой) файл.