0

電話するとき

bundle exec db:migrate

常に新しいテーブルを作成しますか?または、前の表にない新しい列を作成しますか?

そして、ロールバックは何をしますか?どの列を削除するかをどのように知るのでしょうか。また、この削除は元に戻すことができますか?たとえば、有用な列を誤って削除した場合、前のアクションをキャンセルして元に戻すことはできますか?

4

2 に答える 2

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 に答える
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 に答える