2013-08-01 35 views
0

我已经开发了一个运行gmaps4rails的应用程序。上周我使用MySQL DB上传到产品。所有的工作很酷,但是,搜索地址,我尝试编辑一些经度和纬度值,并看到数字出现四舍五入,当我尝试编辑某个位置。gmaps4rails使用MySQL浮点四舍五入数字

我想知道如果我可以做浮动值的高度或精度?或者,如果可以在gmaps4rails的这两个字段中使用小数?以及如何将我现在浮动的值移动到十进制值?

谢谢你的关注。

+0

您可能有一个不正确的列类型(int,而不是小数)。请在Rails控制台中运行此工具,并将输出粘贴到您的问题中:'Map.columns.map {| col | “#{col.name}是#{col.sql_type}”}'(用相关模型名替换'Map') – Benj

+0

@BenjaminSinclaire here:[“id is INTEGER”,“category_id is integer”,“name is varchar(255)“,”warranty is boolean“,”address is varchar(255)“,”phone is varchar(255)“,”schedule is varchar(255)“,”email is varchar(255)“,”web “varchar(255)”,“about is text”,“mision is text”,“vision is text”,“created_at is datetime”,“updated_at is datetime”,“city_id is integer”,“latitude is float”经度是浮点数“,”gmaps是布尔值“] – Stanmx

回答

1

你DB的fiels是浮动的,我几乎可以肯定,它需要在MySQL的十进制,因为它与gmaps4rails工作。您应该执行迁移以修改您的字段

非常重要:如果您有需要保护的数据,则必须在运行迁移之前执行完整数据库转储,但我无法保证您不会对此操作产生任何风险。 正如你在prod服务器中的情况,除了数据库转储之外,我建议将prod数据库导入到您的开发计算机并在此处测试迁移。

轨道迁移应该是这样的:

change_column :my_table, :latitude, :decimal, precision: 10, scale: 8 
change_column :my_table, :longitude, :decimal, precision: 11, scale: 8 

通过你的表名称替换my_table,并调整precisionscale需要

+0

我应用新类型,但现在唯一的问题是经度转换数字类型:-116.988449到-99.99999999。任何解决方案? – Stanmx

+1

我的道歉,我的答案精确度不正确,我编辑它 – Benj

+0

谢谢你的时间。很棒。 – Stanmx