Module: Prioritize::PriorityAfter

Defined in:
lib/prioritize.rb

Overview

Модуль которым расширяем Модели использовавшие в себе метод prioritize_column(…)

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/prioritize.rb', line 40

def self.included(base)
  base.extend ClassMethods
  # К экземпляру класса добавим поле, в которое необходимо записать значение
  # если необходимо выполнить сортировку.
  # После обновления экземпляра если в поле установлено значение - сработает
  # поведение.
  attr_accessor :priority_prev
  # Навесим поведение модели.
  base.after_update :priority_callback
end

Instance Method Details

#priority_after(prev_id) ⇒ Object



63
64
65
# File 'lib/prioritize.rb', line 63

def priority_after(prev_id)
  self.class.priority_after prev_id, id
end

#priority_callbackObject

При заполннном поле priority_prev запустим запрос на обновление сортировочного поля. В данном поле должен быть записан идентификатор элемента ЗА которым должен слеовать перемещаемый элемент. Если такого элемента нет (тоесть перемещаемый элемент переносится в начало списка), тогда в поле необходимо записать строку ‘^’.



56
57
58
59
60
61
# File 'lib/prioritize.rb', line 56

def priority_callback
  if priority_prev.present?
    prev_id = priority_prev == '^' ? nil : priority_prev
    priority_after prev_id
  end
end