Я использую Ruby on Rails 3.0.7 и у меня есть столбец таблицы базы данных position
для обработки сортируемого списка записей.Я хотел бы обновить этот столбец для всех записей, соответствующих некоторым условиям, при уничтожении записи, значение которой position
находится «в середине всех значений позиции», но сохраняя порядок (численно) в столбце position
.
То есть, например, если в следующем списке объектов класса я уничтожу запись с position
3 и user_id
1
#<Article id: 1, position: 1, user_id: 1>,
#<Article id: 2, position: 1, user_id: 2>,
#<Article id: 3, position: 2, user_id: 1>,
#<Article id: 4, position: 3, user_id: 1>,
#<Article id: 5, position: 1, user_id: 3>,
#<Article id: 6, position: 4, user_id: 1>,
#<Article id: 7, position: 5, user_id: 1>,
#<...> # A lot of others records having 'user_id' = 1
Я хотел бы обновить все другие записи, связанные с user_id
1 , чтобы иметь
#<Article id: 1, position: 1, user_id: 1>,
#<Article id: 2, position: 1, user_id: 2>,
#<Article id: 3, position: 2, user_id: 1>,
#<Article id: 5, position: 1, user_id: 3>,
#<Article id: 6, position: 3, user_id: 1>,
#<Article id: 7, position: 4, user_id: 1>,
#<...> # A lot of others records having 'user_id' = 1
Конечно, все это относится к производительности.
Как я могу это сделать (может быть, в одном предложении \ инструкции) ?
Я знаю, что метод update_all
может как-то помочь, но я не знаю, как автоматически увеличить position
значения, используя это.