rakeでmigration
最近の rails はテーブルの作成は、rake の migration というのを使うらしい。
http://www.atmarkit.co.jp/im/carc/serial/proto04/proto04.html
(↑この記事は細かいところが結構間違っている。。)
RakeはRuby Make、つまり、Ruby版のビルドツールで、それを使って ActiveRecord::Migration を利用する。
使い方
ひな形を作って、それを編集する。
以下の例では、membersテーブルを作成するテンプレートを生成。
$ ./script/generate migration create_members
これを実行すると、以下のような db/migrate/001_create_members.rb ができる。
class CreateMembers < ActiveRecord::Migration def self.up end def self.down end end
このひな型はバージョン管理されていて、ひな形を作るごとに、頭の001が002、003、、と増えていく。self.up には以前のバージョンからの追加分を定義し、self.down には以前のバージョンに戻すときの変更分を定義する。今回は初回なので、まずは create の定義だけでOK。(正確に言うとdownにはdropを定義するんだろうか。。。?)
以下、テーブル作成定義を追加したもの。
class CreateMembers < ActiveRecord::Migration def self.up create_table :members do |t| t.column :id, :integer t.column :name, :string end end def self.down end end
編集したら、rakeを使って変更を反映。
$ rake db:migrate
変更を確認。(SQLiteの場合)
$ sqlite3 db/development.sqlite3 sqlite> .schema CREATE TABLE members ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) DEFAULT NULL); CREATE TABLE schema_info (version integer); sqlite> .quit
membersテーブルが作成されていることがわかる。(注:上記例は見やすいように改行してある。)