マイグレーションでカラムのtypeを変更する。マイグレーションでカラムのtypeを変更する。ついでにデータも調整する2013-05-23Railsのmigration便利やなーって話なんですけど。とあるシステムのソースコードを見ていたら、気持ち悪いなと思ったところがあったんですよ。みてもbooleanなのに、文字列で扱ってる部分がある。これはよくある話で、特にこのシステムは古いシステムの仕様を引き継いで、Railsで作り直してるもんだから、データ構造がRailsぽくない。(それ以前によくない部分も)直したい!直したいよ!とまぁ、思うわけです。どこまで影響あるか見てみるわけです。ところが、気づくんです。modelの中では、”true”,”false”という文字列で判定している。viewの選択肢の値は、”0”と”1”。”0”と”true”が対応している。もんで、データを見てみるわけです。trueこれはひどい!というわけで、これをUI部分を修正し、テーブルもbooleanに変更、データも修正するというリファクタリングを行おうと思い手をつけます。UIやモデルの変更は簡単に済むのですが、既存のデータをどうするか?SQLでデータを変更してから、migrationして変更することを考えました。実際ローカルでテストしている人にいちいちSQLを実行させるのは面倒。capistranoでデプロイしてるので、いちいちサーバにつないでSQLを実行してからというのも面倒。やるのが一番面倒がないか?となれば、migrationの中でやるのが便利。カラム情報のリセット、上記の変更を反映する。endendとまぁ、こんな風に書いてmigrationでやっちゃうのが楽でしたという話でした。2016-10-16About東京在住、フリーランスのプログラマーです。プロジェクトの開発全般(ヒアリング、見積、設計から実装)をしています。部分的なお手伝いのご依頼も随時受け付けています。お仕事の依頼は、Twitter、メールもしくはお問い合わせフォームからお願いします。Contactメールアドレス(必須)メッセージ本文(必須)。