3

私はそれらが何を意味するのか疑問に思っていました:

class ChangeTimeColumns < ActiveRecord::Migration
  def self.up
  end

  def self.down
  end
end

時々、Rails は次のようなマイグレーションを作成するだけです:

class ChangeTimeColumns < ActiveRecord::Migration
  def change
  end
end

説明をいただければ幸いです。

4

4 に答える 4

3

これは、間違えた場合に移行を元に戻すことができるようにするためです。

rake db:rollback   #this will rollback the most recent migration


rake db:rollback STEP=3  #this will rollback 3 of them

すべての移行にself.upとself.downを追加します。元に戻せない移行がある場合は、downを含めたり、downに例外を発生させたりすることはできません。このガイドのセクション4.1を確認してください====> http://guides.rubyonrails.org/migrations.html#using-the-up-down-methods

于 2012-06-21T14:58:47.907 に答える
1

Rails の現在のバージョンより前は、self.up と self.down が標準形式でした (Rails 3.0.x など)。

rake db:migrateself.up は、 self.down が aの動作を定義したように、 whereで何が起こるべきかの動作を定義するために使用されますrake db:rollback。変更は比較的新しく、通常、self.down の動作を自明な方法で推測できる場合に使用されます。

于 2012-06-21T14:59:28.187 に答える
0

self.up で行うすべての INSERT、UPDATE などは、self.down で反対のことを行います。

エラーのために後でこれらの移行をロールバックする必要がある場合は重要です。

于 2012-06-21T15:01:47.053 に答える
0

そこに書かれているモデルテーブルに属性を挿入する任意のモデルのセルフアップ。

一方、self.down はその逆です。

于 2012-06-21T15:04:49.407 に答える