- Ruby on Rails 教程
- Ruby on Rails - 首頁
- Ruby on Rails - 簡介
- Ruby on Rails - 安裝
- Ruby on Rails - 框架
- Ruby on Rails - 目錄結構
- Ruby on Rails - 示例
- Ruby on Rails - 資料庫設定
- Ruby on Rails - Active Records
- Ruby on Rails - 遷移
- Ruby on Rails - 控制器
- Ruby on Rails - 路由
- Ruby on Rails - 檢視
- Ruby on Rails - 佈局
- Ruby on Rails - 腳手架
- Ruby on Rails - AJAX
- Ruby on Rails - 檔案上傳
- Ruby on Rails - 傳送郵件
- Ruby on Rails 資源
- Ruby on Rails - 參考指南
- Ruby on Rails - 快速指南
- Ruby on Rails - 資源
- Ruby on Rails - 討論
- Ruby 教程
- Ruby 教程
Ruby on Rails - 遷移
Rails Migration 允許您使用 Ruby 定義資料庫模式的更改,從而可以使用版本控制系統使資料庫結構與實際程式碼保持同步。
這有很多用途,包括:
開發人員團隊 - 如果一個人進行模式更改,其他開發人員只需更新並執行“rake migrate”。
生產伺服器 - 當您推出新版本時執行“rake migrate”,以使資料庫也更新到最新狀態。
多臺機器 - 如果您在桌面和筆記型電腦上或多個位置進行開發,遷移可以幫助您使它們全部保持同步。
Rails Migration 可以做什麼?
- create_table(name, options)
- drop_table(name)
- rename_table(old_name, new_name)
- add_column(table_name, column_name, type, options)
- rename_column(table_name, column_name, new_column_name)
- change_column(table_name, column_name, type, options)
- remove_column(table_name, column_name)
- add_index(table_name, column_name, index_type)
- remove_index(table_name, column_name)
遷移支援所有基本資料型別 - 以下是遷移支援的資料型別列表:
string - 用於小型資料型別,例如標題。
text - 用於較長的文字資料,例如描述。
integer - 用於整數。
float - 用於小數。
datetime 和 timestamp - 將日期和時間儲存到列中。
date 和 time - 只儲存日期或時間。
binary - 用於儲存影像、音訊或影片等資料。
Boolean - 用於儲存真或假值。
有效的列選項是 - 以下是有效的列選項列表。
limit ( :limit => “50” )
default (:default => “blah” )
null (:null => false 表示 NOT NULL)
注意 - Rails Migration 執行的操作可以使用任何前端 GUI 或直接在 SQL 提示符中執行,但 Rails Migration 使所有這些操作變得非常容易。
有關這些內容的詳細資訊,請參閱 Rails API。
建立遷移
以下是建立遷移的通用語法:
application_dir> rails generate migration table_name
這將在 db/migrate/001_table_name.rb 中建立檔案。遷移檔案包含描述資料庫表資料結構的基本 Ruby 語法。
注意 - 在執行遷移生成器之前,建議清理模型生成器生成的現有遷移。
我們將建立兩個與我們的三個表相對應的遷移 - books 和 subjects。
Books 遷移應如下所示:
tp> cd library library> rails generate migration books
以上命令生成以下程式碼。
Subject 遷移應如下所示:
tp> cd library library> rails generate migration subjects
以上命令生成以下程式碼。
請注意,在建立遷移時,您使用的是 book 和 subject 的小寫形式以及複數形式。這是一種 Rails 正規化,每次建立遷移時都應遵循。
編輯程式碼
轉到應用程式的 db/migrate 子目錄,並使用任何簡單的文字編輯器逐個編輯每個檔案。
修改 001_books.rb 如下所示:
ID 列將自動建立,因此也不要在這裡建立它。
class Books < ActiveRecord::Migration
def self.up
create_table :books do |t|
t.column :title, :string, :limit => 32, :null => false
t.column :price, :float
t.column :subject_id, :integer
t.column :description, :text
t.column :created_at, :timestamp
end
end
def self.down
drop_table :books
end
end
self.up 方法用於遷移到新版本,self.down 方法用於在需要時回滾任何更改。此時,上述指令碼將用於建立books 表。
修改 002_subjects.rb 如下所示:
class Subjects < ActiveRecord::Migration
def self.up
create_table :subjects do |t|
t.column :name, :string
end
Subject.create :name => "Physics"
Subject.create :name => "Mathematics"
Subject.create :name => "Chemistry"
Subject.create :name => "Psychology"
Subject.create :name => "Geography"
end
def self.down
drop_table :subjects
end
end
上述指令碼將用於建立subjects 表,並在 subjects 表中建立五條記錄。
執行遷移
現在您已建立所有必需的遷移檔案。是時候將它們針對資料庫執行了。為此,請轉到命令提示符並轉到應用程式所在的庫目錄,然後鍵入rake migrate,如下所示:
library> rake db:migrate
這將在不存在的情況下建立一個“schema_info”表,該表跟蹤資料庫的當前版本 - 每個新的遷移將是一個新版本,並且將執行任何新的遷移,直到您的資料庫達到當前版本。
Rake 是一個類似於 Unix make 程式的 Ruby 構建程式,Rails 利用它來簡化執行復雜任務(例如更新資料庫結構等)。
為生產和測試資料庫執行遷移
如果您想指定要用於遷移的 Rails 環境,請使用 RAILS_ENV shell 變數。
例如:
library> export RAILS_ENV = production library> rake db:migrate library> export RAILS_ENV = test library> rake db:migrate library> export RAILS_ENV = development library> rake db:migrate
注意 - 在 Windows 中,使用“set RAILS_ENV = production”代替export命令。
接下來是什麼?
現在我們有了資料庫和所需的表。在接下來的兩章中,我們將探討兩個重要的元件,即控制器(ActionController)和檢視(ActionView)。
- 建立控制器(Action Controller)。
- 建立檢視(Action View)。