我以这种方式使用acts_as_list v0.9.17:
class ListItem < ActiveRecord::Base
acts_as_list scope: [:column1_id, :column2_id], :add_new_at => :bottom
end
当创建一个新的(作用域的)时@list_item
,比如说column1_id
is 1
,column2_id
is11
和column3_id
is 37
,数据库看起来如下所示,正如预期的那样:
id | position | column1_id | column2_id | column3_id
--- | -------- | ---------- | ---------- | ----------
750 | 1 | 1 | 11 | 89
751 | 2 | 1 | 11 | 56
752 | 3 | 1 | 11 | 105
753 | 4 | 1 | 11 | 25
754 | 5 | 1 | 11 | 37
但是,当 a@list_item
被销毁时,比如说column1_id
is 1
、column2_id
is11
和column3_id
is 56
(记录 id 751
),那么数据库如下所示:
id | position | column1_id | column2_id | column3_id
--- | -------- | ---------- | ---------- | ----------
750 | 1 | 1 | 11 | 89
752 | 3 | 1 | 11 | 105
753 | 4 | 1 | 11 | 25
754 | 5 | 1 | 11 | 37
这意味着position
2
.
如何预防或调整差距?也就是说,当列表项被销毁时,如何处理列表项的重新排序?
注意:我知道有一些方法可以更改位置和重新排序列表,但我不知道是否以及如何使用它们来解决问题(也许使用某种方式remove_from_list
)。