私はこのように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
is 11
、およびcolumn3_id
is37
の場合、データベースは予想どおり次のようになります。
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
is 11
、およびcolumn3_id
is 56
(record 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
)。