3

私は最初にレール3.1で書いていたアプリを持っていましたが、ヒロクのスラッグサイズを減らすために、新しいレール3.0.9アプリを作成し、必要なコードを手動で移動しました。すべてが期待どおりに1ヶ月間働いたが、rake db:schema:loadを使用していたのは、dbスキーマを変更しなかったためです。今日私はスキーマを変更しようとしましたが、移行は何もしていません。彼らは彼らが実行していると思うように見えると彼らはバージョンを追跡しているが、私はコンソールには何も出力されず、dbに変更されず、schema.rbファイルも変更されていません。正しいバージョンを維持する以外は、移行で何も起こらないでしょうか?

rake db:migrate --trace実際には** Execute db:schema:dumpと表示されますが、schema.rbファイルにはまだ追加しようとしていた列がありません。誰が何が起こっているか考えている?アプリケーションがデータベースに接続されていて、すべて正常に動作しています。マイグレーションを実行できないようです。私はschema.rbファイルを変更してrake:db:loadを再度実行することができましたが、運用環境でのデータの損失を避けたいと考えています。

答えて

3

Rails 3.1用の移行では、アップとダウンの両方の移行を行う方法を知っているMigration#changeメソッドを使用できます。 3.0では、別のMigration.upMigration.downメソッドが必要です。 changeupに変更し、downセクションを書き込むことができます。

ティーが指摘したように、あなたは古い移行方法は、クラスではなく、インスタンスメソッドであるため、def self.updef self.downdef changeを変更することを確認する必要があります。

+0

私は実際にこのことをIRCチャンネルの誰かに説明し、電球が私の頭の中で消えてしまった。感謝エミリー、私は気が気になりません;)行く時間はそれらを変更します。 – loucal

+0

私はちょうどこれで少しも得た。 up/downはクラスメソッドなので、 "def change"を "def self.up"に変更し、 "def self.down"を追加します。 – tee

+0

ありがとう、ティー。いいキャッチ! – Emily

関連する問題