![](/img/trans.png)
[英]Ruby on Rails: how do I catch ActiveRecord::Rollback?
[英]how do migrate and rollback work in ruby on rails
當我們打電話
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.