Manually parse HStore data in Rails 4
Today I needed to manually parse a string returned from the HStore with Rails 4. The fix is not as intuitive as I'd like it, so here's a note to myself and for anyone else who has a similar problem.
If you do some weird querying, and execute it with
ActiveRecord::Base.connection.raw_connection.exec_params your HStore data will be returned as a string. With Rails 3 and the activerecord-postgres-hstore it was pretty easy to parse the HStore-encoded string:
Rails 4 has a native support for HStore, but it was a pain to find how to manually parse the HStore-encoded string. The trick is to include the
ActiveRecord::ConnectionAdapters::PostgreSQLColumn::Cast in to a class and use the
class HstoreDeserializer include ActiveRecord::ConnectionAdapters::PostgreSQLColumn::Cast def initialize(str) @str = str end def parse string_to_hstore(@str) end end
If you have a similar problem, hopefully this will help you.