2012-08-06 46 views
0

我想在原本用php编写并正在移动到rails的应用程序中使用acts_as_list。我们使用了一个“位置”值,这个值是一个浮点数,如果用户想要在位置1和位置2之间放置一些东西,他们只会在表格中输入1.5。它看起来像acts_as_list只是使用整数。 acts_as_list中有一种方法使它使用浮动而不是整数?或者可能将一组浮点数转换为一个整数来插入?使用acts_as_list并将浮动值传输到int值

THX

回答

0

你可以修改它,但它更容易用户整数,只是重新排序在你移动一前一后出现列表中的所有项目。

使用浮点数,每次移动一个列表时,你都不得不将数字拆分成更高和更高的精度,如果列表得到足够的重新排序,最终可能会遇到与浮点数数字被存储,然后你将得到一个列表,它的顺序以微妙的方式突破,不会立即显现。使用浮点数的另一个问题确实与将位置(本质上是整数)存储为浮点数有关。当你站在一条线上时,你不会认为自己处于位置1.5--你处于位置1或2中。唯一的情况是像1.5这样的测量对于像排队的人有意义如果你是从线路的前面测量距离(如以英尺/米为单位的物理距离)。然而,在这一点上,1.5测量具有非常不同的含义 - 它不再是位置,而是距离。

如果您试图保存查询/数据库更改所需的数量(浮动可以让您只更新一条记录上的一列而不是多条记录上的一列),那么您很可能错过了宝石为您提供便利的方式,而且您可能想要推出自己的产品,如果您有某些原因需要支持浮动器的话,您需要支付真的需要

但是,考虑到上述关于固有位置是固定数量的观点,我建议不要花费浮点数来节省数据库时间。人们真正要重新整理一份清单的频率如何?它会对您的应用程序产生多大的实际负载?

如果您不得不支持浮动,因为与旧系统有一些集成点,那么请告诉我们更多关于这一点的信息。

+0

thx用于输入 - 查看可能的其他宝石。没有任何问题渲染浮动 - 四舍五入完成到两个级别,没有任何操作,所以浮动担忧是一笔交易。有趣的是,这曾经是应用程序的全部内容,但每个人都讨厌它,因为我们填充它以便人们可以四处走动。很混乱。没有真正的整合点,acts_as_list在这个问题上看起来很理想。 thx再次 – timpone 2012-08-06 19:31:14

+0

声音像填充是一种解决方案,以避免重新排列列表中的所有其他内容。听起来有点丑陋。填充是没有必要的,除非已经证明重新编号列表的计算/速度负担实际上太严重而无法使用它,除非您正在对数千个项目的列表进行排序,否则我毫不怀疑。有点让我想起苹果公司的Microsoft BASIC] [e - 你必须对每一行代码进行编号(这是必需的),所以程序员会开始一个新的应用程序,其行号(10,20,30),所以当他们做出了改变,他们可以在旧线路之间插入新线路。 – jefflunt 2012-08-06 21:35:36

+0

这种编程方式不可避免地伴随着一系列“重新编号”程序,其唯一的工作就是取一块已用尽可用行号的代码并对整个应用程序重新编号,从而使子程序调用保持原样(因为您会从字面上有一条像'10 GOSUB 230'这样的行,可以执行从行'10'跳转到行'230')。重新编号程序的目的不仅是为了在行编号中打开空间,而且是为了防止这些'GOSUB'命令被破坏,因为没有命名函数或子程序。 – jefflunt 2012-08-06 21:38:09