Module: ActsAsPrioritizable::InstanceMethods
- Defined in:
- lib/prioritizable/acts_as_prioritizable.rb
Instance Method Summary collapse
- #after_destroy ⇒ Object
- #before_save ⇒ Object
- #default_priority ⇒ Object
- #lowest_priority ⇒ Object
- #map_for_select(method) ⇒ Object
- #prioritizable_parent ⇒ Object
- #prioritizables ⇒ Object
- #reset_all_priorities ⇒ Object
- #set_priority ⇒ Object
Instance Method Details
#after_destroy ⇒ Object
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_save ⇒ Object
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_priority ⇒ Object
66 67 68 |
# File 'lib/prioritizable/acts_as_prioritizable.rb', line 66 def default_priority self.priority ||= lowest_priority end |
#lowest_priority ⇒ Object
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_parent ⇒ Object
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 |
#prioritizables ⇒ Object
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_priorities ⇒ Object
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_priority ⇒ Object
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 |