Mặc dù tôi không nghi ngờ rằng câu trả lời của Björn Nilsson đã hoạt động khi anh ấy đăng nó, nhưng nó không thành công với tôi với Postgres 9.4
và phiên bản PG gem 0.18.2
. Tôi nhận thấy những điều sau đây có hiệu quả sau khi xem qua tài liệu PG gem:
pg = ActiveRecord::Base.connection
@type_map ||= PG::BasicTypeMapForResults.new(pg.raw_connection)
res = pg.execute("SELECT 'abc'::TEXT AS a, 123::INTEGER AS b, 1.23::FLOAT;")
res.type_map = @type_map
res[0]
# => {"a"=>"abc", "b"=>123, "float8"=>1.23}