2011-12-19 4 views
0

user_idフィールドを持つActive :: Recordクラスを標準で作成しましたが、十分に要件が変更されました。私は 'user_id'カラムを修正し、代わりに 'email'カラムを置く必要があった。マイグレーションファイル内のフィールドを手動で置き換えて、そのバージョンですばやく 'rake db:migrate down/up'を実行して更新を行うだけであると考えました。私はdb/schema.rbも更新してしまった。工場の少女は、スキーマの操作を伴う方法がありませんか?

ませダイス:

Failure/Error: ss = Factory(:model) 
undefined method `email=' for #<Model:0xb2cc288> 

私は罰金コンソールで、またはサービスで電子メールのgetter/setterメソッドを使用することができます - しかし、工場出荷時の女の子は、ヒントを得ていないようです。どこかにメソッドリストをキャッシュしていますか? (ヒント:mysqlテーブルもうまくいくように見えます)

答えて

0

まず、既存のマイグレーションファイルを変更しないようにしましょう。 FactoryGirlだけでなく、あなたのチームメートのセットアップを台無しにすることもあります。要件が変更されても問題ありません。あなたはuser_id列を削除して電子メール列を追加する新しい移行を作成するだけです。このようにして、データモデルの進化が移行に記録されます。

特に問題がある場合は、rake db:test:prepareを実行するか、それでも問題が解決しない場合は、テストデータベースを完全に削除してから再構築してください。

+0

ええ、これは事前チェックインで、何もしていないので、私は安全だと思いました。 rake db:test:それを準備しました!もちろん...間違ったスキーマを移行していました。ありがとうSrdjan。 – trevorgrayson

+0

私は「マイグレーションを変更しても問題ありません」と言いたいのはおそらくプレチェックインです。私が見ている唯一の問題は、それが悪い習慣を構築するということです。 –

関連する問題