高级数据库迁移与Active Record基础指南
1. 创建数据夹具
create_fixtures 的第一个参数是包含夹具数据的目录路径。我们将其设置为相对于迁移文件的路径,因为我们把数据存储在 migrations 的子目录中。
需要注意的是,在迁移中应加载的数据仅为那些你也希望在生产环境中看到的数据,例如查找表、预定义用户等。不要以这种方式将测试数据加载到应用程序中。如果你想这么做,可以考虑创建一个 Rake 任务。
2. 迁移数据
有时候,架构变更也涉及数据迁移。例如,在项目开始时,你可能使用浮点数来存储价格。但如果后来遇到了舍入问题,你可能想改为以整数美分来存储价格。
如果你一直使用迁移来将数据加载到数据库中,这不会有问题。只需更改迁移文件,使其向 price 列加载 1234 而不是 12.34。但如果无法这样做,你可以在迁移内部执行转换。
以下是一种方法,即在更改列类型之前将现有列值乘以 100:
class ChangePriceToInteger < ActiveRecord::Migration
def self.up
Product.update_all("price = price * 100")
change_column :products, :price, :integer
end
def self.down
change_column :products, :price, :
超级会员免费看
订阅专栏 解锁全文
48

被折叠的 条评论
为什么被折叠?



