hotoolong's blog

RailsやVim、業務で気になったことを綴ってます

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")

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