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.

Instance Method Summary collapse

Instance Method Details

#decrement_positionObject



112
113
114
# File 'lib/active_record/acts/list.rb', line 112

def decrement_position
  update_attribute position_column, self.send(position_column).to_i - 1
end

#first?Boolean

Returns:



117
118
119
# File 'lib/active_record/acts/list.rb', line 117

def first?
  self.send(position_column) == 1
end

#higher_itemObject



125
126
127
128
129
# File 'lib/active_record/acts/list.rb', line 125

def higher_item
  self.class.find_first(
    "#{scope_condition} AND #{position_column} = #{(send(position_column).to_i - 1).to_s}"
  )
end

#increment_positionObject



108
109
110
# File 'lib/active_record/acts/list.rb', line 108

def increment_position
  update_attribute position_column, self.send(position_column).to_i + 1
end

#last?Boolean

Returns:



121
122
123
# File 'lib/active_record/acts/list.rb', line 121

def last?
  self.send(position_column) == bottom_position_in_list
end

#lower_itemObject



131
132
133
134
135
# File 'lib/active_record/acts/list.rb', line 131

def lower_item
  self.class.find_first(
    "#{scope_condition} AND #{position_column} = #{(send(position_column).to_i + 1).to_s}"
  )
end

#move_higherObject



79
80
81
82
83
84
85
86
# File 'lib/active_record/acts/list.rb', line 79

def move_higher
  return unless higher_item

  self.class.transaction do
    higher_item.increment_position
    decrement_position
  end
end

#move_lowerObject



70
71
72
73
74
75
76
77
# File 'lib/active_record/acts/list.rb', line 70

def move_lower
  return unless lower_item

  self.class.transaction do
    lower_item.decrement_position
    increment_position
  end
end

#move_to_bottomObject



88
89
90
91
92
93
# File 'lib/active_record/acts/list.rb', line 88

def move_to_bottom
  self.class.transaction do
    decrement_positions_on_lower_items
    assume_bottom_position
  end
end

#move_to_topObject



95
96
97
98
99
100
# File 'lib/active_record/acts/list.rb', line 95

def move_to_top
  self.class.transaction do
    increment_positions_on_higher_items
    assume_top_position
  end
end

#remove_from_listObject



103
104
105
# File 'lib/active_record/acts/list.rb', line 103

def remove_from_list
  decrement_positions_on_lower_items
end