миграция базы данных в rails3.1

Недавно я получил вопрос о миграции rails3.1. Вот код файла миграции.

def change
  create_table :books do |t|
    t.string :title
    t.decimal :price
  end
end

Теперь мне нужно добавить внешний ключ, скажем, comment_id, я использовал для создания другой миграции и использовал в ней метод add_column, чтобы сделать это.

Но так как мы находимся в rail3.1, я подумал, что может быть новый способ сделать это, поэтому я изменил код

def change
  create_table :books do |t|
    t.string :title
    t.decimal :price
    t.references :comment
  end
end

Хорошо, теперь я запускаю rake db:migrate и ничего не происходит. Любая идея?


person castiel    schedule 26.08.2011    source источник


Ответы (1)


вы запускали rake db:rollback перед запуском rake db:migrate? Перед повторным применением изменений необходимо выполнить откат миграции.

person Brian Glick    schedule 26.08.2011
comment
Также убедитесь, что вы удалили t.references :comment при запуске db:rollback - person dexter; 26.08.2011
comment
Будет ли rake db:rollback удалять данные, ранее существовавшие в базе данных? - person castiel; 29.08.2011
comment
Вероятно, да. Если у вас этого нет, вам нужно создать новую миграцию rails generate migration AddReferencesToBooks comment:references вместо изменения существующей миграции. - person Brian Glick; 29.08.2011
comment
да, похоже, нам все еще нужен старый путь - person castiel; 30.08.2011