CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL);
class CreateBooks < ActiveRecord::Migration def change create_table :books do |t| t.string :isbn t.string :title t.integer :price t.string :publish t.date :published t.boolean :cd t.timestamps end end end
オプション | デフォルト | 概要 |
:id | true | 主キーカラムidを生成するか |
:primary_key | id | 主キーの名前 |
:temporary | false | 一時テーブルを作るか |
:force | false | テーブル生成時に、元テーブルを削除するか |
:options | なし | その他のオプション |
class CreateAuthorsBooks < ActiveRecord::Migration def change create_table :authors_books , :id => false do |t|
:options => 'ENGINE=InnoDB'
timestamps | 日付型のcreated_at/updated_atを生成 |
references | 外部キーを生成 |
:limit | カラムの桁数 |
:default | デフォルト値 |
:null | NULL値を許可するか |
:precision | decimal型で、カンマを含んだ全体の桁数 |
:scale | decimal型で、小数点以下の桁数 |
rails generate migration AddBirthToAuthors birth:date invoke active_record create db/migrate/20111221221234_add_birth_to_authors.rb
class AddBirthToAuthors < ActiveRecord::Migration def change add_column :authors, :birth, :date end end
add_column | カラム追加 |
add_index | インデックス追加 |
add_timestamps | created_at/updated_atを追加 |
change_column | カラムを変更 |
change_column_default | カラムのデフォルト値を変更 |
change_table | テーブル変更 |
column_exists? | カラムが存在するかをチェック |
drop_table | テーブルを削除 |
index_exists? | インデックスが存在するかをチェック |
remove_column | カラム削除 |
remove_index | インデックス削除 |
remove_timestamps | created_at/updated_atを削除 |
rename_column | カラム名を変更 |
rename_index | インデックス名を変更 |
rename_tbale | テーブル名を変更 |
execute | SQLを実行 |
C:\user\dev\railbook\app>rake db:migrate (in C:/user/dev/railbook) == AddBirthToAuthors: migrating ============================================== -- add_column(:authors, :billname, :string) -> 0.0000s == AddBirthToAuthors: migrated (0.0000s) =====================================
rake db:rollback STEP=1 | 指定ステップまでバージョンを戻す |
rake db:migrate VERSION=20111221221234 | 指定バージョンまで移行 |
rake db:migrate:redo STEP=5 | 指定ステップだけ戻して、再実行 |
rake db:migrate:reset | DBを削除後、スキーマ再作成 |
rake db:migrate RAILS_ENV=test
ActiveRecord::Schema.define(:version => 20111124220655) do create_table "authors", :force => true do |t| t.integer "user_id" t.string "name" t.date "birth" t.text "address" t.string "ctype" t.binary "photo" t.datetime "created_at" t.datetime "updated_at" end add_index "authors", ["user_id"], :name => "index_authors_on_user_id" ---- 以下略 ---
rake db:schema:load
rake db:reset
rake db:structure:dump
rake db:migrate:reset
# coding: utf-8 Book.create(:id => 1, :isbn => '111-2-3333-4444-0', :title => '自分の本', :price => 100, :publish => '適当出版', :published => '2011-12-01', :cd => false)
rake db:seed
C:\user\dev\railbook\app>rake db:setup (in C:/user/dev/railbook) db/test.sqlite3 already exists db/development.sqlite3 already exists -- create_table("authors", {:force=>true}) -> 0.0312s ======= 以下略 ======
mysql5: id: 1 isbn: 978-4-7980-2812-5 title: MySQL5逆引き大全460の極意 price: 2730 publish: 秀和システム published: 2010-12-01 cd: false
rake db:fixtures:load FIXTURES=users,reviews,books