一度作成したテーブルにカラムを追加してみる。
▽現状のSchema
create_table "onecolumnmodels", :force => true do |t|
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
まずは空の migration ファイルを作成する。G:\Sites\mytest>rails g migration add_thirdname_onecolumnmodel
invoke active_record
create db/migrate/20120930223614_add_thirdname_onecolumnmodel.rb
"rails generate" は "rails g" で代用できるようだ。作成されたmigrationファイルを開くと下記のようになっている。
class AddThirdnameOnecolumnmodel < ActiveRecord::Migration def up end def down end enddef up のところに追加したい内容を、def down のところに元に戻す内容を追加する。
class AddThirdnameOnecolumnmodel < ActiveRecord::Migration
def up
add_column :onecolumnmodels, :thirdname, :string
end
def down
remove_column :onecolumnmodels, :thirdname
end
end
この状態で、migration を実行。G:\Sites\mytest>rake db:migrate == AddThirdnameOnecolumnmodel: migrating ===================================== -- add_column(:onecolumnmodels, :thirdname, :string) -> 0.0070s == AddThirdnameOnecolumnmodel: migrated (0.0080s) ============================実行後に、db/schema.rb の内容を確認すると、thirdname が追加されている。
create_table "onecolumnmodels", :force => true do |t|
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "thirdname"
end
元に戻したい場合は、下記のように version を指定して migration を実行する。rake db:migrate VERSION=1ではどこに version が記載されているかというと、railsのデータベース内の schema_migrations というテーブルに記録されているようだ。
最後の行が直近で追加したバージョン番号(migrationファイルについているシリアル番号と同じ)なので、一つ前のバージョンを指定して migration してみる。
G:\Sites\mytest>rake db:migrate VERSION=20120928013904 == AddThirdnameOnecolumnmodel: reverting ===================================== -- remove_column(:onecolumnmodels, :thirdname) -> 0.2440s == AddThirdnameOnecolumnmodel: reverted (0.2460s) ============================実行後に、db/schema.rb の内容を確認すると、thirdname が削除されている。
create_table "onecolumnmodels", :force => true do |t|
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end

0 件のコメント:
コメントを投稿