24、高级数据库迁移与Active Record基础指南

高级数据库迁移与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, :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值