交换由属性排序的活动记录对象



我有一个带有:week字段的CheckIn模型。我通常通过:week

对这些记录进行排序
CheckIn.all.order(:week)

我还可以使用户能够重新排序这些记录,从而有效地更新了:week属性,从而产生了新的顺序。问题在于,当我更新:week时,该:week号码已经有另一个记录。

换句话说,如果我从此开始:

ci1 = CheckIn.create(week: 0)
ci2 = CheckIn.create(week: 1)
ci3 = CheckIn.create(week: 2)
ci4 = CheckIn.create(week: 3)

然后将ci2week更新为2:

ci2.update({ week: 2})

我留下了check_ins的数组,但是2个记录有同一周的编号,理想情况下,旧2将变成1.是否有内置的轨道来帮助这种情况,或者我需要一个回调来更新周数?

有许多宝石可以帮助您以这种方式记录订购。在插入中列时,他们会自动将随后的记录"降低"。查看acts_as_listranked-model

最新更新