Rails / ActiveRecord 2.1.1 の経験者
- (たとえば) ruby script\generate scaffold product title:string description:text image_url:string で最初のバージョンを作成します
- これにより、(たとえば) 20080910122415_create_products.rb という移行ファイルが作成されます。
- rake db:migrate で移行を適用します
- ここで、ruby script\generate migration add_price_to_product price:decimal を使用して商品テーブルにフィールドを追加します。
- これにより、20080910125745_add_price_to_product.rb という移行ファイルが作成されます。
- rake db:migrate を実行しようとすると、実際には最初の移行が元に戻され、次の移行は適用されません! したがって、製品テーブルは破棄されます!
- しかし、rake を単独で実行すると、1 つの移行が保留中であることが通知されます。
rake db:migrate を適用すると (テーブルが破棄されたら)、すべての移行が順番に適用されることに注意してください。
私が見つけた唯一の回避策は、新しい移行のバージョンを次のように指定することです。
rake db:migrate version=20080910125745
だから私は疑問に思っています:これは予想される新しい動作ですか?