2010年05月21日
rails migration の型変換 change_column を使ってみる。
あるカラムを integer から string の型に変更してみた。
まず、デモ用の環境を作成。
実行する。
テストサーバを起動
ブラウザで以下にアクセスして、値を適当に入れる。
変更の為の migration ファイルを作成する。
追加、削除の用な書式は無いのでわかるように作成しておく。
以下の様に編集する。
実行してみる。
ブラウザで確認すると値が維持されたままです。素晴らしい。
この反対(string -> integer)は、数字できない値は、"0" に置き換えられるので注意。
ちなみに、直前の状態に戻すなら以下を実行する。
まず、デモ用の環境を作成。
ruby script/generate scaffold customer customer_id:integer customer_name:string
実行する。
rake db:migrate
テストサーバを起動
ruby script/server
ブラウザで以下にアクセスして、値を適当に入れる。
http://localhost:3000/customers
変更の為の migration ファイルを作成する。
追加、削除の用な書式は無いのでわかるように作成しておく。
ruby script/generate migration change_customer_id_type_to_customer
以下の様に編集する。
class ChangeCustomerIdTypeToCustomer < ActiveRecord::Migration
def self.up
change_column :customers, :customer_id, :string
end
def self.down
change_column :customers, :customer_id, :integer
end
end
def self.up
change_column :customers, :customer_id, :string
end
def self.down
change_column :customers, :customer_id, :integer
end
end
実行してみる。
rake db:migrate
(in /Users/rails/demo)
== ChangeCustomerIdTypeToCustomer: migrating =================================
-- change_column(:customers, :customer_id, :string)
-> 0.0159s
== ChangeCustomerIdTypeToCustomer: migrated (0.0161s) ========================
(in /Users/rails/demo)
== ChangeCustomerIdTypeToCustomer: migrating =================================
-- change_column(:customers, :customer_id, :string)
-> 0.0159s
== ChangeCustomerIdTypeToCustomer: migrated (0.0161s) ========================
ブラウザで確認すると値が維持されたままです。素晴らしい。
この反対(string -> integer)は、数字できない値は、"0" に置き換えられるので注意。
ちなみに、直前の状態に戻すなら以下を実行する。
rake db:rollback
【Railsの最新記事】