使用Ruby on Rails重新排列的有序列表

dea*_*mon 10 orm ruby-on-rails list ruby-on-rails-3

我想实现一种收藏列表.让我们看一个这个例子的播放列表:

Song A
Song D
Song B
Song C
Run Code Online (Sandbox Code Playgroud)

应该保存歌曲的顺序,用户应该能够重新排列此顺序并在列表中的任意点插入新元素.

我的想法是在保存列表时使用字段"position"并为列表的所有元素重置它.我认为这就是Javas Hibernate所做的.

另一个想法是使用具有很大差异的位置编号,比如1000,这样仍有修改的余地:

Song A 1000
Song D 2000
Song B 3000
Song C 4000
Run Code Online (Sandbox Code Playgroud)

歌曲C将插入位置编号为1500的A和D之间:

Song A 1000
Song C 1500 
Song D 2000
Song B 3000
Run Code Online (Sandbox Code Playgroud)

有更好的想法吗?

luc*_*tte 8

为什么不使用acts_as_list


spi*_*ike 6

如果你想自己推出,这个问题的答案可能会有所帮助:

在保持订购的同时将有序列表保存到数据库的最佳方法

似乎共识只是使用订单字段并在保存时重新排序.如果允许用户以交互方式进行客户端重新排序,则可以减少数据库工作量,并只发送最终列表以保存回服务器.