尽管接受的答案非常好,但我想在此处添加一个答案,希望能够更好地处理像我这样的非专家的原始海报问题2。
- 如何创建迁移以替换该列的类型
产生支架迁移
您可以通过在控制台中键入来生成迁移以保留您的更改(只需将table
表名和column
列名替换为即可)
rails generate migration change_table_column
这将在Rails应用程序/ db / migrate /文件夹中生成框架迁移。此迁移是您的迁移代码的占位符。
例如,我想创建一个迁移从改变一个列的类型string
来text
,在表中称为TodoItems:
class ChangeTodoItemsDescription < ActiveRecord::Migration
def change
# enter code here
change_column :todo_items, :description, :text
end
end
运行迁移
输入更改列的代码后,请运行:
rake db:migrate
应用您的迁移。如果发生错误,可以随时通过以下方式还原更改:
rake db:rollack
上下方法
可接受的答案参考Up
和Down
方法,而不是较新的Change
方法。由于rails 3.2 旧样式的 Up和Down方法比新的Change方法具有一些优点。“上下”避免ActiveRecord::IrreversibleMigration exception
。从Rails 4发行以来,您可以reversible
用来避免此错误:
class ChangeProductsPrice < ActiveRecord::Migration
def change
reversible do |dir|
change_table :products do |t|
dir.up { t.change :price, :string }
dir.down { t.change :price, :integer }
end
end
end
end
享受Rails :)