0

当我们打电话

bundle exec db:migrate

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

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

4

2 回答 2

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. 为了更好地理解,我请求您阅读Rails 迁移指南。通读它可以解决您对迁移的所有查询。

于 2013-01-16T09:42:16.710 回答
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
于 2013-01-16T09:42:53.407 回答