Module: ActiveRecord::Acts::List::InstanceMethods
- Defined in:
- lib/active_record/acts/list.rb
Overview
All the methods available to a record that has had acts_as_list
specified. Each method works by assuming the object to be the item in the list, so chapter.move_lower
would move that chapter lower in the list of all chapters. Likewise, chapter.first?
would return true if that chapter is the first in the list of all chapters.
Instance Method Summary collapse
- #decrement_position ⇒ Object
- #first? ⇒ Boolean
- #higher_item ⇒ Object
- #in_list? ⇒ Boolean
- #increment_position ⇒ Object
- #insert_at(position = 1) ⇒ Object
- #last? ⇒ Boolean
- #lower_item ⇒ Object
- #move_higher ⇒ Object
- #move_lower ⇒ Object
- #move_to_bottom ⇒ Object
- #move_to_top ⇒ Object
- #remove_from_list ⇒ Object
Instance Method Details
#decrement_position ⇒ Object
125 126 127 128 |
# File 'lib/active_record/acts/list.rb', line 125 def decrement_position return unless in_list? update_attribute position_column, self.send(position_column).to_i - 1 end |
#first? ⇒ Boolean
130 131 132 133 |
# File 'lib/active_record/acts/list.rb', line 130 def first? return false unless in_list? self.send(position_column) == 1 end |
#higher_item ⇒ Object
140 141 142 143 144 145 |
# File 'lib/active_record/acts/list.rb', line 140 def higher_item return nil unless in_list? acts_as_list_class.find(:first, :conditions => "#{scope_condition} AND #{position_column} = #{(send(position_column).to_i - 1).to_s}" ) end |
#in_list? ⇒ Boolean
154 155 156 |
# File 'lib/active_record/acts/list.rb', line 154 def in_list? !send(position_column).nil? end |
#increment_position ⇒ Object
120 121 122 123 |
# File 'lib/active_record/acts/list.rb', line 120 def increment_position return unless in_list? update_attribute position_column, self.send(position_column).to_i + 1 end |
#insert_at(position = 1) ⇒ Object
78 79 80 |
# File 'lib/active_record/acts/list.rb', line 78 def insert_at(position = 1) insert_at_position(position) end |
#last? ⇒ Boolean
135 136 137 138 |
# File 'lib/active_record/acts/list.rb', line 135 def last? return false unless in_list? self.send(position_column) == bottom_position_in_list end |
#lower_item ⇒ Object
147 148 149 150 151 152 |
# File 'lib/active_record/acts/list.rb', line 147 def lower_item return nil unless in_list? acts_as_list_class.find(:first, :conditions => "#{scope_condition} AND #{position_column} = #{(send(position_column).to_i + 1).to_s}" ) end |
#move_higher ⇒ Object
91 92 93 94 95 96 97 98 |
# File 'lib/active_record/acts/list.rb', line 91 def move_higher return unless higher_item acts_as_list_class.transaction do higher_item.increment_position decrement_position end end |
#move_lower ⇒ Object
82 83 84 85 86 87 88 89 |
# File 'lib/active_record/acts/list.rb', line 82 def move_lower return unless lower_item acts_as_list_class.transaction do lower_item.decrement_position increment_position end end |
#move_to_bottom ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/active_record/acts/list.rb', line 100 def move_to_bottom return unless in_list? acts_as_list_class.transaction do decrement_positions_on_lower_items assume_bottom_position end end |
#move_to_top ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/active_record/acts/list.rb', line 108 def move_to_top return unless in_list? acts_as_list_class.transaction do increment_positions_on_higher_items assume_top_position end end |
#remove_from_list ⇒ Object
116 117 118 |
# File 'lib/active_record/acts/list.rb', line 116 def remove_from_list decrement_positions_on_lower_items if in_list? end |