あきくもちゃのブック
(139 keywords)

秋雲茶のお気に入り

  • マインディアからのお知らせ マインディアからのお知らせ
  • shinout.knowledge shinout.knowledge
  • 西小倉事典 西小倉事典
  • 里香のブック 里香のブック

あきくもちゃのブックのメンバー

  • 西小倉パンデイロ 西小倉パンデイロ
  • 里香 里香
  • しん しん
  • なおき なおき
 

rails-migration

0pt

リファレンス日
リファレンス英
参考

DB構成をSQLを書かずに宣言できる仕組み。
初期値とか制約とか、索引とかも勿論作成できる。

コマンドは、rake db:migrate ってやると db/migrate 下にあるマイグレーションファイルを実行してDBに変更を加える。
勿論DBの設定(db/schema.rb)は設定しておく事が前提。

で、試してた中で分かったのが、一回 db:migrate をすると、その時のタイムスタンプを保持してて、次に db:migrate ってしても、以前から変更がなければ何も実行されないということ。

以前は、db/migrate 下のファイルを毎度実行するものだと思っていたので勘違いしていた。

フィールド追加

> rails g migration AddHogeToModel hoge:string
* db/migrate/ の下にフィールド追加用のファイルが作成される。
> rake db:migrate
* 変更反映

※どうやら自動生成は一部しか対応していなとか。

フィールド変更

参考

> rails g migration ChangeHogeToModel
でファイルを作って、

>vi [yyyymmddhhmiss]_change_hoge_to_model.rb
-------------------------
class ChangeHogeToModel < ActiveRecord::Migration
  def up
    change_column :model, :hoge, :string, :limit=>512
  end

  def down
    # ロールバック出来ない指定
    raise ActiveRecord::IrreversibleMigration
  end
end
-------------------------
:wq

> rake db:migrate
で変更反映

フィールド名変更

def up
  rename_column :model, :hoge, :fuga
end

テーブル名変更

def up
  rename_table :old_model, :new_model
end

フィールド名削除

def up
  remove_column :model, :field1, :field2
end

インデックス追加・削除

def up
  add_index :model, :index_name, :options
end
def down
  remove_index :model, :index_name
end
* 通常index_name = column_name

「rails-migration」について友人に書いてもらう。

あなたにとって「rails-migration」とは?

ログインするとワンクリックでキーワードを投稿できます

ログインする 新規登録する

お気に入りの説明

0 pt
Ruby on Rails : migration 機能リファレンス - WebOS Goodies
もっと読む

他の人の「rails-migration」を見る