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 ?