Как я должен удалить пример данных, заполненных через self.up - PullRequest
0 голосов
/ 31 октября 2011

Как удалить образцы данных в методе (ах) self.down для обеих миграций, перечисленных ниже

class FooSampleData < ActiveRecord:Migration

  def self.up
     Foo.create(:bar => 1)
     Foo.create(:bar => 2)
     Foo.create(:bar => 3)
  end

  def self.down
  end
end

class FooSampleDataV2 < ActiveRecord:Migration

  def self.up
     Foo.create(:bar => 4)
     Foo.create(:bar => 5)
     Foo.create(:bar => 6)
  end

  def self.down
  end
end

1 Ответ

1 голос
/ 31 октября 2011

Если вы создаете таблицу базы данных одновременно, то уничтожение таблицы приведет к уничтожению данных.

Если: bar уникален, вы можете найти по bar и уничтожить объект.

# up
Foo.create([{:bar => 1},{:bar => 2},{:bar => 3})

# down
Foo.where(:bar => [1,2,3]).each { |foo| foo.destroy }

Отредактированный

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

Если вам действительно нужно сделать это в эксклюзивной миграции, ваша работа по переносу будет пропорциональна вашей работе по созданию.

В моих проектах я избегаю добавления данных в миграцию.

Некоторые полезные ссылки:

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