hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

Railsのmigrationでchange_columnを利用する

change_column

Railsのmigrationでカラムの情報を変更したい場合によく使うchange_columnですが、

change_column(table_name, column_name, type, options = {})

と変更したいtypeを設定してoptionsを設定すればいいので、add_columnなどとインターフェイスが変わらず設定できます。

change_column_null

NULLのtrue/falseを切り替えたいだけの場合は change_column_nullが便利ですね。

change_column_null(:users, :nickname, false)

このように設定できます。

change_column_comment

カラムに設定するコメントのみを変更する場合はchange_column_commentですね。 nilを入れることで設定しているコメントを削除することもできます。

change_column_comment(:users, :id, 'comment')
change_column_comment(:users, :nickname, nil)

change_column_default

最後にカラムのデフォルト値を変更するchange_column_defaultなのですが、 このメソッドは引数にHashで:from と :to で設定することで可逆的な設定がすることができます。

change_column_default(:posts, :state, from: nil, to: "draft")

これは便利ですね。 テストで作ったけど戻したい等の場合はとても役に立ちます。