Как переупорядочить существующий ассортимент - PullRequest
2 голосов
/ 10 мая 2019

данный сценарий,

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

Я знаю, что вышеупомянутое неверно и оборачиваю голову, чтобы найти решение

1 Ответ

0 голосов
/ 15 мая 2019

Я решил, как показано ниже

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...