rubocop のご指摘
C: Rails/ReversibleMigration: change_column_comment(without :from and :to) is not reversible.
何をしたらご指摘を受けたのか
DBのカラムにコメントを追加したいと思い、以下のコマンドを用いてマイグレーションファイルにコメントを追加しました。
$ bundel exec rails g migration AddCommentsToTable
内容
200xxxxxxxxxx..._add_comments_to_table.rb
class Add CommentsToTable < .....
def change
change_column_comment(:hoge, :fuga, 'hogehogefugafugaしたい')
end
end
$ bundle exec rails db:migrate
確認
$ bundle exec rails db:migrate:status
up 200xxxxxxxxxx... Add comments to table
いけてる。
が、、、、、
実行したコマンド
$ rubocop -a
叱られた。
C: Rails/ReversibleMigration: change_column_comment(without :from and :to) is not reversible.
reversibleではないということは、rollbackしてもupのまま...?
$ bundle exec rails db:rollback
up 200xxxxxxxxxx... Add comments to table
upのままだ。
原因
change_columnではrollbackできないということだった。(railsガイドより)
change_columnコマンドは逆進できない(可逆的でない)点にご注意ください。
マイグレーションファイルで使用するchangeメソッドでは逆進の処理もやってくれるものだと思い込んでいました。
なので、今回マイグレーションはできたが、ロールバックのコマンドを打ってもUPのままだったみたいです。
解決法
upメソッドかdownメソッドをchangeメソッドの代わりに用いる
200xxxxxxxxxx..._add_comments_to_table.rb
class Add CommentsToTable < .....
def up
change_column_comment(:hoge, :fuga, 'hogehogefugafugaしたい')
end
end
$ bundle exec rails db:rollback
down 200xxxxxxxxxx... Add comments to table
$rubocop -a
いけた。
changeメソッドが使用できる定義についてこちらの記事にまとめられています。 https://prograshi.com/framework/rails/change-method-in-migration/
参考