9 votes

connection.select_value ne renvoie que des chaînes de caractères dans postgres avec pg gem

Je suis en train de convertir une application rails qui utilise mysql (gem mysql2) en postgres (gem pg).

Avec mysql, ActiveRecord::Base.connection.select_value Les appels retournent des valeurs typées en fonction des données, par exemple :

> ActiveRecord::Base.connection.select_value("SELECT COUNT(*) FROM errors")
=> 86
> ActiveRecord::Base.connection.select_value("SELECT exception FROM errors where id=565")
=> "TechTalk.Genome.SqlExecutionException"
> ActiveRecord::Base.connection.select_value("SELECT id FROM errors where id=565")
=> 565

Cependant, avec postgres, connection.select_value renvoie toujours une chaîne de caractères :

> ActiveRecord::Base.connection.select_value("SELECT COUNT(*) FROM errors")
=> "1"
> ActiveRecord::Base.connection.select_value("SELECT id FROM errors")
=> "1"
> ActiveRecord::Base.connection.select_value("SELECT source FROM errors limit 1")
=> "webapp"

Cela a cassé quelques tests unitaires, et bien que ceux-ci soient réparables, je suis certain que nous avons d'autres codes qui dépendent de ces valeurs de retour. Existe-t-il un moyen d'obtenir des valeurs de retour correctement typées à partir de connection.select_value lors de l'utilisation de postgres ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X