Postgres在ActiveRecord中插入错误

时间:2013-11-12 22:39:15

标签: ruby-on-rails ruby-on-rails-3 activerecord rails-activerecord rails-postgresql

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

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

导致错误:

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

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

我正在运行Rails 3.2.13和Postgres 9.3.1

1 个答案:

答案 0 :(得分: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]数组应该可以有效。