Миграция Rails после сброса базы данных

Привет, у меня есть общая проблема миграции:

Когда я создаю миграции следующим образом:

class RenameColumn < ActiveRecord::Migration
  def change
    rename_column :users, :hotel_stars, :rating_stars
    rename_column :users, :restaurant_stars, :price_stars
  end
end

и соответствующим образом измените код в файле модели, представления и контроллера (я не создаю новую модель и т. д.):

ie.

Model: attr_accessible :rating_stars, :price_stars   

(вместо :hotel_stars, :restaurant_stars )

Controller: @rating = current_user.rating_stars

Теперь, когда я запускаю миграцию (rake db:migrate) -> она работает! Но после rake db:drop, rake db:create, rake db:migrate больше нет!

Что не так с этой миграцией? Как вы можете создать миграции, которые работают СО сбросом базы данных и БЕЗ него?

Спасибо!!


person Sebastian Oberste-Vorth    schedule 16.12.2011    source источник
comment
Пожалуйста, дайте точное сообщение об ошибке. Я больше не могу сказать, в чем проблема! Спасибо.   -  person Michael Durrant    schedule 16.12.2011
comment
Rails версии 3.1.2 У меня нет ни одного сообщения об ошибке. Потому что у меня постоянно возникают проблемы с миграциями... Сообщение об ошибке каждый раз разное. Ошибка с этой миграцией заключалась в том, что она изменила имя столбцов, но содержимое в столбцах исчезло.   -  person Sebastian Oberste-Vorth    schedule 16.12.2011


Ответы (2)


Я думаю, ваша проблема в том, что rake db:create не перестраивает вашу базу данных из schema.rb. Для этого вам нужно выполнить rake db:setup вместо rake db:create. В любом случае я бы попробовал rake db:reset вместо удаления/создания, поскольку я считаю, что это позволит выполнить то, что вы хотите сделать, за один шаг.

Введите rake -T для получения списка доступных задач и того, что они делают.

Также см. здесь дополнительную информацию о миграции rails: http://guides.rubyonrails.org/migrations.html

person f1sherman    schedule 16.12.2011

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

Вы «могли бы» облегчить это, добавив миграцию, которая переместит вашу базу данных туда, где ожидается ваша новая миграция, или вы можете исправить миграцию, которая была изменена ранее.

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

person andrewpthorp    schedule 16.12.2011
comment
Привет! Я думаю, что каким-то образом манипулировал старыми миграциями... разве этого недостаточно, чтобы создать и мигрировать rake db:drop? или манипулирование старыми файлами миграции вызывает гораздо больше проблем? - person Sebastian Oberste-Vorth; 16.12.2011