2012-03-19 37 views
0

我有一系列迁移以便在即将发布的版本上进行重构。一些迁移用于移动列。Rails:当我单独运行一个迁移时,但不能与其他迁移系列一起运行

当我一次运行全部迁移时,以下示例中的特定列永远不会复制到新位置。

def up 
    add_column :buy_topics, :price, :integer 

    say_with_time 'Move price and value to buy/topics' do 
     bar = ProgressBar.new(Buy::Topic.count) 
     Buy::Topic.includes{topic}.find_each do |topic| 
     topic.price = topic.topic.price 
     topic.save 
     bar.increment! 
     end 
    end 

    remove_column :topics, :price 
    end 

尽管未复制值,但仍然可以成功创建并删除列。

但是,如果我将所有迁移迁移至此之前的迁移(例如rake db:migrate VERSION=XXXXXXXXn-1),然后手动运行此特定迁移(rake db:migrate VERSION=XXXXXXXXn),则会复制这些值。

因此,在总结,如果我单独运行迁移它的工作,否则将无法正常工作

可能是什么这背后的原因是什么?

回答

1

试着这样做:

Buy::Topic.reset_column_information 

欲了解更多信息,请查看[此页] [http://api.rubyonrails.org/classes/ActiveRecord/的“改变其表后使用模式” Migration.html。

+0

谢谢,它的工作原理。我想如果没有这个,孤立的单一迁移也不应该起作用。我猜桌子底下会发生更多事情。 – lulalala 2012-03-20 02:46:11