電話するとき
bundle exec db:migrate
常に新しいテーブルを作成しますか?または、前の表にない新しい列を作成しますか?
そして、ロールバックは何をしますか?どの列を削除するかをどのように知るのでしょうか。また、この削除は元に戻すことができますか?たとえば、有用な列を誤って削除した場合、前のアクションをキャンセルして元に戻すことはできますか?
電話するとき
bundle exec db:migrate
常に新しいテーブルを作成しますか?または、前の表にない新しい列を作成しますか?
そして、ロールバックは何をしますか?どの列を削除するかをどのように知るのでしょうか。また、この削除は元に戻すことができますか?たとえば、有用な列を誤って削除した場合、前のアクションをキャンセルして元に戻すことはできますか?
あなたは自分で何をすべきかを説明しています。 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
私はあなたが意味すると思います、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の移行に関するこのガイドをお読みください。それを読むと、移行に関するすべてのクエリが解決されます。