2

由于某种原因,在使用数组类型列时,我无法让 ActiveRecord 正确格式化插入语句。它似乎想逃避 Postgres 符号:

{"val1", "val2", "val3"}进入\{\"val1\", \"val2\", \"val3\"\}

导致错误:

PG::Error: ERROR: array value must start with "{" or dimension information

我运行我的数据库命令错误吗?rake db:seedbundle exec rake db:seed导致此错误以及运行迁移。

我正在运行 Rails 3.2.13 和 Postgres 9.3.1

4

1 回答 1

2

ActiveRecord 的 Rails3 版本本身不理解 PostgreSQL 数组,因此它回退到“我不知道它是什么所以我会假装它是一个字符串”模式。如果您安装postgres_ext,那么您将能够正确使用数组:

Model.where(:some_array_column => [2, 3, 5, 6, 11]).to_sql
# SELECT "models".* FROM "models" WHERE "models"."some_array_column" = '{2,3,5,6,11}'

并插入一个%w[val1 val2 val3]数组应该类似地工作。

于 2013-11-12T23:06:17.427 回答