У меня есть простой график работы rails. Работы в расписании будут упорядочены по приоритету задания. Поскольку некоторые задания могут изменяться в приоритетном порядке и по той же самой природе, порядок, который должен быть завершен, мне нужно обновить приоритет и приоритет остальной части таблицы, чтобы гарантировать, что 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
Это могло бы быть. Глядя на код и пример, который они используют в прокомментированном коде, мне кажется, что мне нужен мастер-класс для обертки вокруг заданий. Если это правда, тогда это не сработает для меня. –
Я думаю, вы можете использовать его без класса упаковки, не предоставляя область. Поэтому просто вызовите '' 'act_as_list: column => 'priority''' в модели и он должен предоставить все magic_act_as_list без необходимости в области. – Veraticus
Я мог ошибаться, но я думаю, что это требует мастер-класса. Я не думаю, что он знает, как отрегулировать остальные задания, не обращаясь к мастер-классу. –