1

Rails 4 と Postgres 9.2。「pg」gem バージョン 0.16.0。

モデル属性は、schema.rb では次のようになります。

t.string "codes",  array: true

このフィールドに次の文字列の配列を格納しようとしています:

["", "a string"]

データベース テーブルでは、このフィールドのデータは{"","a string"}期待どおりに保存されます。

ただし、Rails では、model.codes を介してこの属性を取得すると、配列の最初の要素が取り除かれ、次のように返されます。

["a string"]

a) 配列にあった (意図的に配置された) 空の文字列はどうなりましたか?

b)空の文字列を単一のスペース文字に置き換えると、取得された属性は問題ないように見えます([" ", "a string"])が、それに頼る必要がないことを望んでいます。

4

2 に答える 2

2

掘り下げた結果、同じ問題の解決策を探している人に役立つはずの何かがあります。

pg_array_parserRails の Postgres アダプターは、効率的な配列解析の重労働を外部の gem に依存しており、この gem がプロジェクトで使用可能な場合はデフォルトで処理されます。

上記の問題は、この gem をバンドルに追加しても再発せず、配列から空の文字列を削除することなく、すべてのデータ アクセス/永続性が期待どおりに動作します。

Rails の関連する行:

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql/array_parser.rb#L18

于 2013-08-14T01:55:26.397 に答える