在Ruby on Rails中回滚迁移

时间:2015-03-21 04:34:44

标签: ruby-on-rails

我正在开发我的第一个ruby on rails项目,并使用“rails generate scaffold users”命令为我的应用创建了一个“用户”表。

现在我正在尝试撤消此语句,因为我希望尝试在我的数据库中重写与该类和表相关的类。

我看到scaffold语句在迁移中创建了一个“def change”类,当我尝试回滚该迁移时,迁移中没有任何功能。我添加了一个“def down”方法,其中只定义了“drop_table:users”。

def down
    drop_table :users
end

但是,当我运行“rake db:rollback”时,命令提示符中没有响应,表格没有变化。

我不太确定如何撤消此迁移以重写表架构。有人可以提供帮助吗?

整个迁移如下所示:

class CreateUsers < ActiveRecord::Migration
    def change
        create_table :users do |t|
            t.string :name
            t.string :password_digest
            t.string :email

            t.timestamps
        end
    end

    def down
        drop_table :users
    end
end

编辑: 通过运行db:drop和db:rollback来清除我的架构来解决此问题。我认为在我的另一个程序中打开数据库存在问题。我关闭它,这允许数据库回滚。

1 个答案:

答案 0 :(得分:0)

rails generate scaffold users不会更改您的数据库,它只会生成MVC代码。您可以通过destroy scaffold命令

简单地撤消它
 rails destroy scaffold users

如果运行rake db:migrate命令,则可以通过rake db:rollback命令回滚它。在迁移文件中,change方法足以用于表的创建或删除操作。不需要down方法,down方法是up方法的补充方法。