Rails迁移无法正常工作

时间:2015-06-09 09:53:45

标签: ruby-on-rails ruby

我有奇怪的问题。这是我的迁移代码:

class SetDefaultToFalse < ActiveRecord::Migration
  def change
    MyObject.where('done is ?', nil).each do |a|
      a.done = false
      a.save
    end
  end
end

如果我在之前的数据库转储中运行此操作,并且在完成所有其他旧迁移后,my_objects中的任何done字段都没有标记为false字段}。如果我再次rake db:rollbackdb:migrate,突然之间就可以了。为什么?列done在此之前添加了5次以上的迁移。更改以前的迁移不是我正在寻找的解决方案。

4 个答案:

答案 0 :(得分:1)

我不确定你为什么要在迁移中这样做,但这可能会有所帮助:

MyObject.where('done is ?', nil).update_all(done: false)

答案 1 :(得分:1)

答案 2 :(得分:0)

我建议你试试这段代码:

class SetDefaultToFalse < ActiveRecord::Migration
  def self.up
    MyObject.where('done is ?', nil).each do |a|
      a.update_attribute(done: false)
    end
  end
end

答案 3 :(得分:0)

创建后添加完成字段。在db模式中,“done”字段不存在。

运行

  

rake db:migrate