PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Obtenir des résultats typés à partir d'ActiveRecord raw SQL

Bien que je ne doute pas que la réponse de Björn Nilsson ait fonctionné lorsqu'il l'a publiée, elle échoue pour moi avec Postgres 9.4 et version gemme PG 0.18.2 . J'ai trouvé ce qui suit pour fonctionner après avoir parcouru la documentation de la gemme PG :

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}