Module: ActsAsPrioritizable::InstanceMethods

Defined in:
lib/prioritizable/acts_as_prioritizable.rb

Instance Method Summary collapse

Instance Method Details

#after_destroyObject



49
50
51
52
53
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 49

def after_destroy
  if(priority < lowest_priority && !prioritizable_parent.nil? rescue false)
    prioritizables.select{|p| p.priority > priority rescue false }.each{|p| p.update_attribute(:priority, p.priority-1)}
  end
end

#before_saveObject



42
43
44
45
46
47
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 42

def before_save
  unless prioritizable_parent.nil?
    bump = (prioritizables - [self]).compact.select{|owner| owner.priority.to_i == priority.to_i}
    bump.first.update_attribute(:priority, priority.to_i+1) unless bump.empty?
  end
end

#default_priorityObject



66
67
68
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 66

def default_priority
  self.priority ||= lowest_priority
end

#lowest_priorityObject



62
63
64
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 62

def lowest_priority
  prioritizables.map(&:priority).compact.max || 0
end

#map_for_select(method) ⇒ Object



20
21
22
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 20

def map_for_select(method)
  [self.send(method), priority]
end

#prioritizable_parentObject



24
25
26
27
28
29
30
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 24

def prioritizable_parent
  if self.class.send(:class_variable_get, :@@prioritizable_parent) == 'class'
    return self.class
  else
    self.send(self.class.send(:class_variable_get, :@@prioritizable_parent), true) rescue nil
  end
end

#prioritizablesObject



32
33
34
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 32

def prioritizables
  prioritizable_parent.send(self.class.send(:class_variable_get, :@@prioritizables)) rescue []
end

#reset_all_prioritiesObject



55
56
57
58
59
60
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 55

def reset_all_priorities
  if(!prioritizable_parent.nil?)
    i = 0
    prioritizables.each{|p| p.update_attribute(:priority, (i+=1))}
  end
end

#set_priorityObject



36
37
38
39
40
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 36

def set_priority
  if (priority.nil? || priority == 0 || priority.blank?)
    update_attribute(:priority, lowest_priority + 1)
  end
end