活动记录中不可逆转移的好处?

时间:2015-06-24 06:15:16

标签: ruby-on-rails rails-activerecord

我一直在阅读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

1 个答案:

答案 0 :(得分:2)

假设您的表zipcode中有一个名为addresses的列,其类型目前为integer,并且您希望将其更改为string

现在,很有可能将数据类型从integer更改为string,但将string更改回整数并不总是可行的,因此我们可以&#39;恢复此迁移。

def self.up
  change_column :address, :zipcode, :string
end 

现在,如果你rake db:migrate,它会正常工作,但当你要还原它时,你会收到以下错误:

  

- 耙子流产!        - ActiveRecord :: IrreversibleMigration

  

使它们不可逆转的好处是什么?

实际上,我们并不倾向于使它们不可逆转;它恰好是不可逆转的。就个人而言,我总是可以逆转,因为他们非常灵活。