0

我想在最初用 php 编写并正在移动到 rails 的应用程序中使用acts_as_list。我们使用了一个浮动的“位置”值,这样如果用户想在位置 1 和 2 之间放置一些东西,他们只需在表单中输入 1.5。看起来acts_as_list 只使用整数。act_as_list 中有没有办法让它使用浮点数而不是整数?或者可能将一组浮点数转换为整数以进行插入?

谢谢

4

1 回答 1

0

您可以修改它,但使用整数更容易,只需重新排序列表中出现您移动的项目之后的所有项目。

使用浮点数时,每次移动列表时,您都被迫将数字拆分为越来越高的精度,如果列表在其中得到足够的重新排序,您最终可能会遇到与浮点数存储方式相关的问题,然后你会得到一个列表,它的排序以微妙的方式中断,不会立即显而易见。使用浮点数的另一个问题实际上与将位置(本质上是一个整数)存储为浮点数有关。当你站在一条线上时,你不会认为自己处于 1.5 的位置——你要么处于 1 的位置,要么处于 2 的位置。唯一的情况下,像 1.5 这样的测量值在像人们站成一排的情况下是有意义的是如果您正在测量距离(例如以英尺/米为单位的物理距离),例如,线的前面。然而,

如果您尝试保存所需的查询/数据库更改的数量(浮点数将允许您只更新一条记录上的一列,而不是多条记录上的一列),那么您可能会错过gem 为您做这件事的便利性,如果出于某种原因您确实需要支持浮点数,您可能想自己动手做。

但是,鉴于上述关于位置本质上是一个整数的观点,我建议不要仅仅为了节省数据库时间而进行浮点运算。人们多久重新排序一次列表,它会给你的应用带来多少实际负载?

如果相反,由于与旧系统的某些集成点,您必须支持浮点数,那么请告诉我们更多相关信息。

于 2012-08-06T15:43:51.117 回答