如何更改rails 3中的列名?

V.N*_*ice 3 database model-view-controller ruby-on-rails

基本上我不小心写了password_has而不是password_hash,我想通过rake db:rollback我可以做出相应的更改,然后做rake db:migrate和rake db:reset但是好像在mysql中没有发生变化..我不断收到错误. . 我该怎么办?理想情况下,我想破坏数据库并重新启动它,但它不会破坏它,因为当我这样做并尝试重新创建它时,它说它仍然有一个已创建的副本..我在这里疯了,请帮助我是一个新手!

Aka*_*wal 6

您可以编写重命名迁移.生成它:

rails g migration RenameColumn
Run Code Online (Sandbox Code Playgroud)

接下来,在生成的迁移文件中应用以下代码以重命名该列:

 class RenameColumn < ActiveRecord::Migration
  def self.up
    rename_column :table_name, :old_column, :new_column
  end

  def self.down
    # rename back if you need
  end
end
Run Code Online (Sandbox Code Playgroud)

运行迁移后,请避免将其回滚以进行修改.写一个新的来代替.

如果rake db:migrate给出错误,请尝试运行您需要的错误:

rake db:migrate:up VERSION=20130405061213
Run Code Online (Sandbox Code Playgroud)

只需替换正确的版本(它在您的迁移的文件名中).x