论坛首页 编程语言技术论坛

Rails中的Migrations(三)

浏览 1645 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (9) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-19   最后修改:2008-11-19

Managing Tables:
    在Rails的Migrations中可以执行一些DDL的操作,例如新增,删除表等。先来看一段新增表的操作代码:

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      =>   建立的表为临时表。(当应用与数据库断开连接后,表即被删除。具体应用场景后述)

:force            =>   如果创建的表已经存在,那是否要drop后再建立。(默认为false)

其中需要注意的有以下两点:

  1. t.timestamps方法会给表中建立两个字段:created_at和updated_at,字段类型由相应数据库类型决定。
  2. Rails默认使用的mysql数据引擎为InnoDB。如果在使用create_table方法时,使用了:options指定了额外参数,则Rails会使用数据库默认的数据存储引擎来建表。因此,如需继续使用InnoDB,则需要:options中显式声明。

 

   发表时间:2008-11-19  
小錯字
:forece 
應為
:force 
0 请登录后投票
   发表时间:2008-11-19  
Omnibus 写道
小錯字
:forece 
應為
:force 

Thanks, 马上改。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics