代码之家  ›  专栏  ›  技术社区  ›  Ben

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

  •  0
  • Ben  · 技术社区  · 15 年前

    例如,我有以下迁移

    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 回复  |  直到 15 年前
        1
  •  4
  •   Shadwell    15 年前

    可能是命名冲突 Task . 它是否在应用程序中的任何其他类中失败,或者 任务 ?

    你可以用 ::Task 表示您想要 任务 在根命名空间中初始化。例如,Rake定义了自己的 任务 类,迁移过程中的某些内容可能也在这样做。

        2
  •  1
  •   Codebeef    15 年前

    尝试添加

    Task.reset_column_information
    

    就在你更新之前