【发布时间】:2012-09-16 06:40:04
【问题描述】:
我正在将一个 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 获取正确类型的返回值?
【问题讨论】:
标签: mysql ruby-on-rails-3 postgresql activerecord pg