0

これが何が起こったのかです。以前は Message というモデルがありましたが、名前を変更したかったので、そのテーブルの名前を Message から Thread に変更する移行を作成しました。その後、そのテーブルに追加された移行がありました。

これはうまくいきました。db:migrate を使用して、既存のデータベースを先に進めます。ここで、新しいデータベースを作成するために db:create を実行すると、レールがメッセージを作成するときに失敗することに気付きました。次に、メッセージにフィールドを追加しようとすると、次のようになります。

uninitialized constant AddActiveMessageIdToWalls::Message

問題は、すべてのコントローラーとモデルの名前をメッセージからスレッドに変更したことであり、移行時に移行でモデルが見つからないことだと思いますか? そうですか?

レールの世界でこれをどのように処理しますか? ありがとう

4

2 に答える 2

3

これを避けるために、db/schema.rb を最新の状態にしておくのが好きです。したがって、新しい環境でデータベースを作成する必要がある場合は、rake db:createandを実行するだけですrake db:schema:load。移行は必要ありません。

于 2011-08-23T01:53:30.337 に答える
0

最も簡単な解決策: 以前の移行で空の Message < ActiveRecord::Base サブクラスを追加するだけです。

... migration file ...
class Message < ActiveRecord::Base;end
于 2011-08-22T22:35:21.687 に答える