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

时间:2017-11-30 17:24:23

标签: ruby-on-rails

我的CheckIn模型带有:week字段。我通常按​​: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)

然后将week的{​​{1}}更新为2:

ci2

我留下了一个ci2.update({ week: 2}) 的数组,但是2个记录具有相同的周数,理想情况下,旧的2将成为1.是否有东西内置到rails中以帮助这种情况或者我需要回调到更新周数?

1 个答案:

答案 0 :(得分:2)

有许多宝石可以帮助您以这种方式记录订单。当插入中间列表时,它们会自动将后续记录“向下”推送。查看acts_as_listranked-model