2012-08-06 13 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