为什么我的Rails 4 / Postgres中的所有表都以1的“维度”创建?

我试图用Postgres在Rails 4中进行基本的模型生成和迁移,我遇到了很多问题。 我安装了pg gem,版本为0.17.1

在开始时,我甚至无法无错误地运行迁移,因为schema_migrations表是使用维度为1version列创建的。 一旦我手动将其更改为零,它工作正常。

现在,如果我查看由于使用Rails模型生成器而导致的所有迁移,我会看到每个列(每个表中的id列除外)都是使用dimension 1创建的。

我需要更改一些默认设置吗? 这是不正确的,我搞乱别的东西? 这是我的第一个Rails 4项目,所以我只想弄清楚为什么它希望所有这些列都默认为一个数组。

这是我的一个迁移文件:

 class CreateCatalogs < ActiveRecord::Migration def change create_table :catalogs do |t| t.string :name t.text :description t.string :schema_name t.string :catalog_type t.boolean :billable t.timestamps end end end 

这是来自schema.rb

 create_table "catalogs", force: true do |t| t.string "name", array: true t.text "description", array: true t.string "schema_name", array: true t.string "catalog_type", array: true t.boolean "billable", array: true t.datetime "created_at", array: true t.datetime "updated_at", array: true end 

哎呀!

幸运的是, Ruby on Rails v4.0.3 今天发布 。 我做了以下事情:

  1. 升级Rails
  2. 删除了db/migrate/schema.rb
  3. 删除所有3个数据库(开发,测试,生产)
  4. rake db:setup
  5. rake db:migrate
  6. 查看新的db/migrate/schema.rb以确保它没问题
  7. 跑了rake db:test:prepare

果然,这个新版本解决了这个问题。 我无法在任何地方找到问题的记录! 几个星期以来一直是个问题。 无论如何,修好了!

可能是您的迁移将每列指定为数组