railsでカラムを削除する時にはremove_column
を使って削除します。
class RemoveEmailFromUsers < ActiveRecord::Migration
def change
remove_column :users, :email
end
end
しかし、この変更を取り消したく、rake db:rollback
でロールバックを行いました。
次の瞬間。。
ActiveRecord::IrreversibleMigration:
remove_column is only reversible if given a type.
型が無いよと怒られてしまいました。
なので、ロールバックを行いたい場合は、型を追加して、
class RemoveEmailFromUsers < ActiveRecord::Migration
def change
remove_column :users, :email, :string #型を追加
end
end
再度, rake db:rollback
を実行してあげれば無事カラムが復活します。
また、マイグレーションファイルを作る際に、
rails g migration RemoveEmailFromUsers
ではなく、
rails g migration RemoveEmailFromUsers email
というように最後にしっかりとカラムを指定してあげると、自動的に変更したいカラムと型が設定されるので幸せになれます。
参考: https://qiita.com/HiromiKai_Green/items/7cedfdabbf7db750fc8c