一般的问题是,如果将来通过添加没有数据库支持的代码来更改模型,则迁移可能会失败。
场景与此类似:我有这样的迁移:
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
迁移被部署到登台。然后将状态机添加到需要状态属性的价格模型中。add_state 迁移被部署到 staging,因此 Price 在 dev 和 staging 上具有 state 属性。
决定将应用程序部署到生产环境。
上面显示的迁移将不会执行,因为 state 属性不存在。那是后来添加的...
因此,迁移似乎受到模型未来状态的影响......
是否有任何宝石或做法来避免这些瓶颈?