如何在rails上的ruby中进行迁移和回滚

时间:2013-01-16 09:34:17

标签: ruby-on-rails

当我们打电话时

bundle exec db:migrate

它总是会创建一个新表吗?或者只是创建不在上一个表中的新列?

回滚有什么作用?它如何知道要删除哪一列,这个删除内容是否可逆?例如,如果我不小心删除了一个有用的列,我可以取消之前的操作并将其取回吗?

2 个答案:

答案 0 :(得分:0)

我认为你的意思是bundle exec rake db:migrate

  1. Active Record会跟踪已经运行的迁移。示例:如果您使用sqlite3作为数据库,则可以查看具有这些迁移详细信息的表schema_migrations。它主要有像

    这样的条目
     row id          version
        1            "20120926105202" #matched migration timestamp
    
  2. 此rake任务只运行<app>/db/migrate/下迁移文件中的内容。 因此,如果您在该迁移文件中创建了表,那么就可以这样做。

  3. 要回滚上次迁移,您始终可以运行rake db:rollback

  4. 为了更好地理解,我请求您阅读此Guide on Rails Migrations。通过它阅读将解决您的所有查询w.r.t迁移。

答案 1 :(得分:0)

你在描述自己要做什么。 http://guides.rubyonrails.org/migrations.html

class CreateProducts < ActiveRecord::Migration
  def up # for rake db:migrate
    create_table :products do |t|
      t.string :name
      t.text :description

      t.timestamps
    end
  end

  def down # for rake db:rollback
    drop_table :products
  end
end