单独创建迁移

             迁移文件存储在 db/migrate 文件夹中,每个迁移保存在一个文件中。文件名采用 YYYYMMDDHHMMSS_create_products.rb 形式,即一个 UTC 时间戳后加以下划线分隔的迁移名。迁移的类名(驼峰式)要和文件名时间戳后面的部分匹配。例如,在 20080906120000_create_products.rb 文件中要定义 CreateProducts 类;在 20080906120001_add_details_to_products.rb 文件中要定义 AddDetailsToProducts 类。文件名中的时间戳决定要运行哪个迁移,以及按照什么顺序运行。从其他程序中复制迁移,或者自己生成迁移时,要注意运行的顺序。

自己计算时间戳不是件简单的事,所以 Active Record 提供了一个生成器:

$ rails generate migration AddPartNumberToProducts

这个命令生成一个空的迁移,但名字已经起好了:

class AddPartNumberToProducts < ActiveRecord::Migration
  def change
  end
end

 

如果迁移的名字是“AddXXXToYYY”或者“RemoveXXXFromYYY”这种格式,而且后面跟着一个字段名和类型列表,那么迁移中会生成合适的 add_column 或 remove_column 语句。

$ rails generate migration AddPartNumberToProducts part_number:string:index

 

这样会生成一个添迁移,如:

class AddPartNumberToProducts < ActiveRecord::Migration
  def change
    add_column :products, :part_number, :string
    add_index :products, :part_number
  end
end

 这个迁移会在你的表中添加相应的键。同理把add换成remove就是在表中移除。

有时多人合作的工程需要修改数据表,这时我们不能用rake回滚再迁移,因为这么做可能会影响别人的数据表。所以我们可以通过这种方法来实现对数据库的修改。

$ rails generate migration UpdataPartNumberFromProducts part_number:string

 生成迁移

class RemovePartNumberFromProducts < ActiveRecord::Migration
  def change
    remove_column :products, :part_number, :string
    add_column :product, :name. :string
  end
end

 是指在products中删除part_number,属性为string,的键在添加name,属性string的键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值