给定情况
id name sequence
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
用户表中有sequence
,代表要在前端显示的用户顺序。
在上面的示例中,如果我尝试在user id
3之间插入用户,则预期的行为应该是
id name sequence
1 a 1
2 b 2
3 c 3
4 d 5
5 e 6
6 f 4
此处位置是使用最后一个序列输入计算的
last_sequence = 3.
类似地,用户可以重复相同类型的操作,并且应该根据数据库中的操作对其进行重新排序。 注意:不是JQuery排序。
我的尝试
seq = last_sequence
users.where("last_sequence >= ? and id != ?",3,6).each do |u|
u.update_attributes(sequence: seq+1 )
seq = u.sequence + 1
end
我知道以上情况是错误的,全神贯注地寻找解决方案
答案 0 :(得分:0)
我像下面一样决心
seq = latest_updated_user.sequence
user.where("sequence >= ? and id != ?",last_user.sequence, last_user.id).order(:sequence, :created_at).each do |v|
v.update_attributes(sequence: seq)
seq += 1
end