Rails: одна миграция работает, когда я запускаю ее по отдельности, но не в серии с другими миграциями - PullRequest
0 голосов
/ 19 марта 2012

У меня есть серия миграций для рефакторинга в следующем выпуске.Некоторые миграции используются для перемещения столбцов.

Когда я запускаю миграции все сразу, определенный столбец в следующем примере никогда не копируется в новое место.

  def up
    add_column :buy_topics, :price, :integer

    say_with_time 'Move price and value to buy/topics' do
      bar = ProgressBar.new(Buy::Topic.count)
      Buy::Topic.includes{topic}.find_each do |topic|
        topic.price = topic.topic.price
        topic.save
        bar.increment!
      end
    end

    remove_column :topics, :price
  end

Хотя значения не копируются, столбцы все равно были созданы и успешно удалены.

Однако, если я запусту всю миграцию до предыдущей (например, rake db:migrate VERSION=XXXXXXXXn-1), а затем запустите вручнуюэто одна конкретная миграция (rake db:migrate VERSION=XXXXXXXXn), значения копируются между собой.

Итак, если я запускаю эту миграцию отдельно, она работает, иначе она не будет работать

Что может бытьпричина этого?

1 Ответ

1 голос
/ 19 марта 2012

Попробуйте сделать это:

Buy::Topic.reset_column_information

Для получения дополнительной информации посмотрите «Использование модели после изменения ее таблицы» на [этой странице] [http://api.rubyonrails.org/classes/ActiveRecord/Migration.html].

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