Ruby on rails 在rails 3中运行rake db:migrate时获取构建任务错误

Ruby on rails 在rails 3中运行rake db:migrate时获取构建任务错误,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,Ruby On Rails 3.2,运行命令时出现以下错误 rake db:migrate VERSION=201504******. 错误: 雷克流产了! 不知道如何构建任务“20150419131135” 实际上我已经有了一个迁移文件。现在我正在连接到一个新的数据库。这里我想在那个数据库中创建一个表。请检查我下面的文件 20150419131135_create_users.rb: 迁移后,我出现上述错误。请帮助我解决此错误。self.down和self.up方法应位于一个CreateUsers类中: 不应该只是上下颠倒吗m

运行命令时出现以下错误

rake db:migrate VERSION=201504******.
错误:

雷克流产了! 不知道如何构建任务“20150419131135”

实际上我已经有了一个迁移文件。现在我正在连接到一个新的数据库。这里我想在那个数据库中创建一个表。请检查我下面的文件

20150419131135_create_users.rb:

迁移后,我出现上述错误。请帮助我解决此错误。

self.down和self.up方法应位于一个CreateUsers类中:


不应该只是上下颠倒吗methods@jphager2:在文档中,Rails 2.3中的迁移是用self编写的,因为3.2中没有.Ok。这个问题指定了Rails 3,所以也许这就是问题所在?@jphager2:不,问题在于拆分方法,正如我在回答中所说的。self.up似乎是up的旧版本,但它仍能按预期工作。所以它成功了。不确定为什么将方法拆分为两个类定义会有问题。我真的希望ActiveRecord没有对ruby文件做任何额外的解析…如果只做rake db:migrate而不使用版本呢
class CreateUsers < ActiveRecord::Migration
  def self.up
    if !table_exists? :users
      create_table :users do |t|
        t.string :contact_name
        t.string :login_id
        t.string :password_hash
        t.string :password_salt
        t.string :phone
        t.string :address
        t.timestamps
      end
    end
  end
end


class CreateUsers < ActiveRecord::Migration
  def self.down
    drop_table :users if !table_exists?(:users)
  end
end
class CreateUsers < ActiveRecord::Migration
  def self.up
      create_table :users do |t|
        t.string :contact_name
        t.string :login_id
        t.string :password_hash
        t.string :password_salt
        t.string :phone
        t.string :address
        t.timestamps
      end unless table_exists? :users
    end
  end

  def self.down
    drop_table :users if table_exists? :users
  end
end