我将一个使用mysql(mysql2 gem)的rails应用程序转换为使用postgres(pg gem)。
使用mysql时,
然而,使用PostgreSQL时,
使用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
然而,使用PostgreSQL时,
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
获取正确类型的返回值?