1

我的红宝石代码:

Portfolio.where("data @> (:key => :value)",     :key => 'CSJ', :value => '0.1')

生成以下 SQL:

"SELECT \"portfolios\".* FROM \"portfolios\"  WHERE (data @> ('CSJ' => '0.1'))"

出现此错误:

Error: PG::Error: ERROR:  operator does not exist: unknown => unknown
LINE 1: ...olios".* FROM "portfolios"  WHERE (data @> ('CSJ' => '0.1'))
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT "portfolios".* FROM "portfolios"  WHERE (data @> ('CSJ' => '0.1'))

Postgresql 9.1.4,Rails 3.2.7/8,在我的模型代码中使用带有以下内容的 activerecord-postgres-hstore gem:

serialize :data, ActiveRecord::Coders::Hstore

帮助将不胜感激!

4

1 回答 1

3

您没有在 Rails 使用的数据库中安装 hstore 扩展。

例如,如果我在我select 'a' => 'b'的一个没有 hstore 的数据库中说,我会得到:

=> select 'a' => 'b';
ERROR:  operator does not exist: unknown => unknown
LINE 1: select 'a' => 'b';
                   ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

但是在另一个确实安装了 hstore 的数据库中,我得到了这个:

=> select 'a' => 'b';
 ?column? 
----------
 "a"=>"b"
(1 row)

你需要create extension hstore在你的 Rails 数据库中做一个。

于 2012-08-15T00:39:52.597 回答