Heroku轻拍推动怪异

时间:2010-04-23 14:42:44

标签: ruby-on-rails geolocation heroku numeric taps

我使用水龙头在我的机器和Heroku之间移动数据时有最奇怪的经验。

它的工作正常,但它似乎在我的地理坐标的小数位后面直接丢失0,即50.0519322由于某种原因被设置为50.519322 ...不知道为什么。

当我从远程位置提取数据时,即。 heroku db:pull ...它工作正常,我的机器上的所有小数位都完好无损,然而,当我将它推回远程服务器时,它会丢失这些零。特别是直接在小数点后面,虽然我还没有在其他地方注意到它。

起初我将lat和lng存储为简单的数字,但将其细化为:

change_column :places, :lat, :numeric, :precision => 15, :scale => 10
change_column :places, :lng, :numeric, :precision => 15, :scale => 10

没有结果,任何想法发生了什么?

从远程服务器上的控制台我得到lat:

#<BigDecimal:2aebcc5967c0,'0.50519322E2',18(18)>

和我的机器:

#<BigDecimal:10232f7c8,'0.50519322E2',12(16)>

这也是奇怪的,第二个,因为当我通过我的视图编辑它时它显示为50.0519322但是当我通过控制台执行to_f时它给了我50.519322

服务器和本地计算机都是postgres,存储为数字。

1 个答案:

答案 0 :(得分:0)

这听起来像Ruby中的BigDecimal错误: http://blog.ethanvizitei.com/2010/04/bug-with-bigdecimal-in-ruby-187.html

db:pulldb:push最适合开发使用。我建议使用PGBackups系统来移动数据,而不会在本地系统和Heroku之间进行任何更改:

http://devcenter.heroku.com/articles/pgbackups