| Module | ActiveRecord::Acts::List::InstanceMethods |
| In: |
vendor/rails/activerecord/lib/active_record/acts/list.rb
|
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.
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 122
122: def decrement_position
123: return unless in_list?
124: update_attribute position_column, self.send(position_column).to_i - 1
125: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 127
127: def first?
128: return false unless in_list?
129: self.send(position_column) == 1
130: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 137
137: def higher_item
138: return nil unless in_list?
139: self.class.find(:first, :conditions =>
140: "#{scope_condition} AND #{position_column} = #{(send(position_column).to_i - 1).to_s}"
141: )
142: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 151
151: def in_list?
152: !send(position_column).nil?
153: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 117
117: def increment_position
118: return unless in_list?
119: update_attribute position_column, self.send(position_column).to_i + 1
120: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 75
75: def insert_at(position = 1)
76: position == 1 ? add_to_list_top : insert_at_position(position)
77: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 132
132: def last?
133: return false unless in_list?
134: self.send(position_column) == bottom_position_in_list
135: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 144
144: def lower_item
145: return nil unless in_list?
146: self.class.find(:first, :conditions =>
147: "#{scope_condition} AND #{position_column} = #{(send(position_column).to_i + 1).to_s}"
148: )
149: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 88
88: def move_higher
89: return unless higher_item
90:
91: self.class.transaction do
92: higher_item.increment_position
93: decrement_position
94: end
95: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 79
79: def move_lower
80: return unless lower_item
81:
82: self.class.transaction do
83: lower_item.decrement_position
84: increment_position
85: end
86: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 97
97: def move_to_bottom
98: return unless in_list?
99: self.class.transaction do
100: decrement_positions_on_lower_items
101: assume_bottom_position
102: end
103: end
# File vendor/rails/activerecord/lib/active_record/acts/list.rb, line 105
105: def move_to_top
106: return unless in_list?
107: self.class.transaction do
108: increment_positions_on_higher_items
109: assume_top_position
110: end
111: end