当我们打电话时
bundle exec db:migrate
它总是会创建一个新表吗?或者只是创建不在上一个表中的新列?
回滚有什么作用?它如何知道要删除哪一列,这个删除内容是否可逆?例如,如果我不小心删除了一个有用的列,我可以取消之前的操作并将其取回吗?
答案 0 :(得分:0)
我认为你的意思是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
为了更好地理解,我请求您阅读此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