简单的Rails 4迁移在Postgres上扔旗帜

时间:2014-02-10 02:02:23

标签: ruby-on-rails ruby-on-rails-4

我在这里为我的第一个Rails 4项目进行了简单的迁移。这是我项目中第一个在第一个模型上的迁移。我也尝试过:

rake db:forward STEP=1

但这没有做任何事,甚至没有错误。这是迁移:

class CreateOrganizations < ActiveRecord::Migration
  def change
    create_table :organizations do |t|
      t.string :org_type
      t.string :status
      t.string :name
      t.string :dba_name
      t.string :url
      t.text :description

      t.timestamps
    end
  end
end

这是我在rake db:migrate上遇到的错误。

undefined method `to_i' for []:Array/Users/me/.rvm/gems/ruby-2.0.0-p353@myapp/gems/activerecord-4.0.2/lib/active_record/schema_migration.rb:36:in `version'

该错误发生在ActiveRecord :: SchemaMigration.version方法中,该方法只调用super.to_i

它必须与schema_migrations表有关。现在它是空白的。这几乎就像我错过了一个初始化步骤。

我收养得太早了,还是我错过了4岁的东西?另请注意,所有数据库都已创建并且确实存在。

1 个答案:

答案 0 :(得分:1)

我发现了错误。 Postgresql允许版本化记录。至少,那就是我think。无论如何,schema_migrations表创建时只有一列versiondimension为1。

我以为我会试着通过在那里放一个零来欺骗Rails。好吧,Postgres不会让我加价值!它以类似于Rails的方式抱怨,说一些Array必须以特定方式格式化。就在那时我注意到了维度。

我将dimension上的schema_migrations.version字段从1更改为0.然后我重新运行了迁移,它们运行正常。


<强> 更新


这显然是Rails 4.0.2中的一个错误。幸运的是,Rails 4.0.3昨天发布了。请看这个this答案,了解如何克服这个问题。