我一直在阅读rails中的Active记录迁移。我们很可能在大多数时间都会进行可逆迁移,但我不明白进行不可逆转的迁移是什么意思?谁能举一些例子?使它们不可逆转的好处是什么?
这是我从rails Guide中读到的:
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
答案 0 :(得分:2)
假设您的表zipcode
中有一个名为addresses
的列,其类型目前为integer
,并且您希望将其更改为string
。
现在,很有可能将数据类型从integer
更改为string
,但将string
更改回整数并不总是可行的,因此我们可以&#39;恢复此迁移。
def self.up
change_column :address, :zipcode, :string
end
现在,如果你rake db:migrate
,它会正常工作,但当你要还原它时,你会收到以下错误:
- 耙子流产! - ActiveRecord :: IrreversibleMigration
使它们不可逆转的好处是什么?
实际上,我们并不倾向于使它们不可逆转;它恰好是不可逆转的。就个人而言,我总是可以逆转,因为他们非常灵活。