DataMapper импортирует первичный ключ - PullRequest
3 голосов
/ 15 июня 2010

Я запускаю скрипт импорта, который импортирует дамп CSV базы данных в локальную базу данных sqlite с использованием DataMapper.

Мои модели выглядят так:

class Staff

    include DataMapper::Resource

    property  :staff_id, String, :key => true
    property  :full_name, String

end

class Project

  include DataMapper::Resource

  property  :project_id, Integer, :key => true
  property  :title, String
  property  :status, String

 belongs_to  :staff

end

CSV содержит первичный ключ, поэтому при выполнении импорта я использую его в качестве ключа.В следующий раз, когда я запускаю импорт, я очищаю таблицы и начинаю заново, однако стем Datamapper стонет, потому что первичные ключи уже заняты.файл и заново создать пустой файл .db непосредственно перед запуском импорта?Если так, какой самый простой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 15 июня 2010

Вы можете использовать DataMapper.auto_migrate!, чтобы сдуть таблицы, а затем воссоздать их в соответствии с текущим состоянием модели.В новых таблицах не будет данных о предыдущих запусках.

Поэтому сразу после того, как вы определили свои модели, но перед тем, как начать импорт данных, сделайте что-то вроде следующего:

0 голосов
/ 15 июня 2010

Если вы создаете полную БД из импорта, я бы действительно рекомендовал полностью обнулить базу данных, чтобы избежать каких-либо побочных эффектов от более ранних запусков.Это также сохраняет ваш путь кода build-db хорошо протестированным.

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