アフィリエイト広告を利用しています

広告

posted by fanblog

rails migration の型変換 change_column を使ってみる。

あるカラムを integer から string の型に変更してみた。
まず、デモ用の環境を作成。
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

実行してみる。
rake db:migrate
(in /Users/rails/demo)
== ChangeCustomerIdTypeToCustomer: migrating =================================
-- change_column(:customers, :customer_id, :string)
   -> 0.0159s
== ChangeCustomerIdTypeToCustomer: migrated (0.0161s) ========================

ブラウザで確認すると値が維持されたままです。素晴らしい。
この反対(string -> integer)は、数字できない値は、"0" に置き換えられるので注意。
ちなみに、直前の状態に戻すなら以下を実行する。
rake db:rollback
   
×

この広告は30日以上新しい記事の更新がないブログに表示されております。