2017-07-02 39 views
-1

我開發一個應用程序,它是非常相似的待辦事項列表在本質上,除了待辦事項的事項順序,可由用戶改變。如何實現todos/list的訂單保存?

什麼是保存在數據庫的順序,而無需在順序變化重新保存整個待辦事項列表的好方法?

我Rails中,Postgres的開發和反應,最新的版本。

我想將它保存爲用戶Todos中的數組(可能有多個應用程序的用戶),但我認爲它可能會使事情複雜一點,因爲每次創建待辦事項時我都必須保存也列出。

+0

這似乎是* Tab鍵順序*問題:https://stackoverflow.com/questions/19458971/postgresql-drag-and-swap/19466942#19466942 – wildplasser

回答

1

你可以看看acts_as_list寶石,爲此你必須添加在表中的附加列位置。但是這將對記錄進行大規模更新。但是這個寶石經常更新。

如果你想要一個優化的解決方案,儘量減少對改變列表更新的數量,那麼你應該檢查ranked_model寶石,但是這個人是不是經常更新。有一個簡要介紹它是如何工作的: -

這個庫是從底層使用ARel編寫的。這使得代碼比許多實現更清晰。排名模型也被優化寫入儘可能少的數據庫:等級被存儲爲-2147483648到2147483647(在INT範圍在MySQL)之間的數。當一個物品被賦予一個新的位置時,它將自己分配給兩個鄰居之間的等級編號。這允許在兩個鄰居之間沒有數字可用之前進行多個項目的移動。發生這種情況時,排名模型會嘗試將其他記錄轉移。如果項目不能輕易移動,它將重新平衡排名組中所有成員的排名數字分佈。

你可以參考這種寶石,讓你自己的實現,因爲它僅支持軌3 & 4.

+0

太棒了! ..我使用Rails 5.1.2雖然..嗯... – Aurimas