Ошибки Postgres HStore - неизвестный оператор
Мой рубиновый код:
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 со следующим в моей модели:
serialize :data, ActiveRecord::Coders::Hstore
Помощь будет оценена!
1 ответ
Решение
Вы не установили расширение hstore в базу данных, которую использует Rails.
Например, если я скажу 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.