У меня есть простой график работы приложения рельсов.Задания в расписании будут упорядочены по приоритету задания.Поскольку некоторые задания могут изменить приоритет и по той же природе, в порядке их завершения, я должен иметь возможность обновлять приоритет и приоритет остальной таблицы, чтобы гарантировать, что никакие 2 задания не имеют одинаковый приоритет.Как только приоритет обновлен, я хочу, чтобы список приоритетов был непрерывным, иными словами, приоритеты помечены как 1,2,3,4,5 и т. Д.вместо пробелов типа 1,2,4,5,6,8 и т. д.
Может ли кто-нибудь помочь мне определить правильное кодирование для достижения этой цели?
Это то, что у меня сейчас естьв моей модели:
class Job < ActiveRecord::Base
include ActiveModel::Dirty
belongs_to :customer
has_many :job_items
before_validation :update_priorities
validates :priority, :uniqueness => true
private
def update_priorities
if self.priority_changed?
self.class.where("priority >= ?", self.priority).update_all("priority = priority + 1")
else
nil
end
end
Приведенный выше код прекрасно обновляет приоритеты, если это совершенно новая работа.Однако, как только я начинаю переупорядочивать текущие задания, в последовательности начинают появляться пробелы.
В настоящее время я использую Rails 3.2.1