当我们打电话
bundle exec db:migrate
它总是创建一个新表吗?或者只是创建不在前一个表中的新列?
回滚有什么作用?它怎么知道要删除哪一列,这个删除的东西是可逆的吗?例如,如果我不小心删除了一个有用的列,我可以取消之前的操作并将其取回吗?
当我们打电话
bundle exec db:migrate
它总是创建一个新表吗?或者只是创建不在前一个表中的新列?
回滚有什么作用?它怎么知道要删除哪一列,这个删除的东西是可逆的吗?例如,如果我不小心删除了一个有用的列,我可以取消之前的操作并将其取回吗?
我假设你的意思是,bundle exec rake db:migrate
Active Record 跟踪哪些迁移已经运行。示例:如果您使用 sqlite3 作为数据库,您可以查看该表 -schema_migrations
其中包含这些迁移详细信息。它主要有类似的条目
row id version 1 "20120926105202" #matched migration timestamp
此 rake 任务仅运行您在<app>/db/migrate/
. 因此,如果您在该迁移文件中创建了表,它会这样做。
要回滚上次迁移,您可以随时运行rake db:rollback
为了更好地理解,我请求您阅读Rails 迁移指南。通读它可以解决您对迁移的所有查询。
您正在描述自己要做什么。 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