一度作成したテーブルにカラムを追加してみる。
▽現状の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 件のコメント:
コメントを投稿