锁定老帖子 主题:Rails中的Migrations(四)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (10)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-24
Managing Tables:
class CreateOrderHistories < ActiveRecord::Migration def self.up create_table :order_histories do |t| t.integer :order_id, :null => false t.text :notes t.timestamps end def self.down drop_table :order_histories end end 对照create_table的方法签名很容易理解这段代码: create_table(table_name, options = {}) {|table_definition| ...} 在options的这个参数中有以下这些key-value对可以使用: :id => 是否要生成主键; :primary_key => 如果有主键,则作为主键的字段名。(默认为id) :options => 其他需要在建表时指定的参数。(例如针对mysql指定数据存储引擎和字符编码) :temporary => 建立的表为临时表 :forece => 如果创建的表已经存在,那是否要drop后再建立。(默认为false) 其中需要注意的有以下两点:
Rename Table: Class RenameOrderHistories < ActiveRecord::Migration def self.up rename_table :order_histories, :order_notes end def self.down rename_table :order_notes, :order_histories end end rename_table方法签名的第一个参数为原表名,第二个参数为需要改成的表名。
Problems with rename_table: def self.up create_table :order_histories do |t| t.integer :order, :null => false t.text :notes t.timestamps end order = Order.find :first OrderHistories.create(:order_id => order, :notes => "test") end 而在第七次的migrations中将order_histories表改名为order_notes。在过了一段时间后,你决定drop掉整个开发环境
的数据库,然后从头执行所有的migrations文件。于是在执行第四个migrations文件时,Rails会报错,因为找不到
OrderHistories这个model类了,(现在叫OrderNotes了)。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1635 次