无法更新我的Rails数据库迁移中的记录

时间:2010-10-06 12:03:07

标签: ruby-on-rails sqlite rails-migrations

例如,我有以下迁移

class AddStatusField < ActiveRecord::Migration
  def self.up
    add_column :tasks, :status, :string
    Task.update_all "status='complete'", "completed = 't'"
    remove_column :tasks, :completed
  end
end

当我运行它时(使用rake db:migrate),我收到以下消息

==  AddStatusField: migrating =================================================
-- add_column(:tasks, :status, :string)
   -> 0.0010s
-- update_all("status='complete'", "completed = 't'")
rake aborted!
An error has occurred, this and all later migrations canceled:

undefined method `update_all' for #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0xd3d34a8>

如果我立即再次进行迁移,则update_all来电似乎有效。

我正在使用Rails 2.3.5和sqlite3。

是什么给出了?

2 个答案:

答案 0 :(得分:4)

看起来它可能与Task存在命名冲突。它是否会在您的应用程序中的任何其他类或Task

中失败

您可以使用::Task调用它来表明您希望根命名空间中的Task类。例如,Rake定义了自己的Task类,迁移过程中的某些内容可能也是如此。

答案 1 :(得分:1)

尝试添加

Task.reset_column_information

在您的update_all

之前