一般的な問題は、データベースによって支えられていないコードを追加することによってモデルが将来変更された場合、移行が失敗する可能性があることです。
シナリオはこれに似ています: 私はこのような移行を持っています:
def change
Product.find_each do |product|
product.prices.each do |price|
price.supplier_part_number = product.supplier_part_number
price.save
end
end
end
移行がステージングにデプロイされます。次に、state 属性を必要とする状態機械が Price モデルに追加されます。add_state 移行はステージングにデプロイされるため、Price には dev とステージングの状態属性があります。
アプリを本番環境にデプロイする決定が下されます。
また、状態属性が存在しないため、上記の移行は実行されません。後から追加です...
そのため、移行はモデルの将来の状態に影響されるようです...
この種のボトルネックを回避するための宝石やプラクティスはありますか?