2

何らかの理由で、配列型の列を使用している場合、ActiveRecord で挿入ステートメントを正しくフォーマットすることができません。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 を実行しています

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 に答える