Railsアプリをmysql(mysql2 gem)からpostgres(pg gem)に変換しています。
mysqlを使用すると、ActiveRecord::Base.connection.select_value
呼び出しはデータに従って入力された戻り値を返します。次に例を示します。
> 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
ただし、postgresでは、connection.select_value
常に文字列を返します。
> 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"
これはいくつかの単体テストを破りました。それらは修正可能ですが、これらの戻り値に依存する他のコードがあると確信しています。postgresを使用するときに適切に入力された戻り値を取得する方法はありますか?connection.select_value