由于某种原因,在使用数组类型列时,我无法使ActiveRecord正确格式化insert语句。它似乎想逃避Postgres符号:
{"val1", "val2", "val3"}
加入\{\"val1\", \"val2\", \"val3\"\}
导致错误:
PG::Error: ERROR: array value must start with "{" or dimension information
我运行的db命令错了吗? rake db:seed
和bundle exec rake db:seed
导致此错误以及正在运行的迁移。
我正在运行Rails 3.2.13和Postgres 9.3.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]
数组应该可以有效。