module OpenStax::Utilities::ActsAsNumberable::ContainerInstanceMethods
Public Instance Methods
me_and_peers()
click to toggle source
# File lib/openstax/utilities/acts_as_numberable.rb, line 197 def me_and_peers my_class.where(container_column => self.send(container_column)) end
move_to_container!(new_container)
click to toggle source
# File lib/openstax/utilities/acts_as_numberable.rb, line 159 def move_to_container!(new_container) return if new_container.id == self.send(container_column) ActiveRecord::Base.transaction do remove_from_container! self.send container + "=", new_container self.assign_number self.save! self.changed_sets = true end end
my_class()
click to toggle source
# File lib/openstax/utilities/acts_as_numberable.rb, line 193 def my_class table_class || self.class end
remove_from_container!()
click to toggle source
# File lib/openstax/utilities/acts_as_numberable.rb, line 172 def remove_from_container! later_items = my_class.where(container_column => self.send(container_column)) .where("#{number_field} > ?", self.send(number_field)) if !self.destroyed self.send "#{number_field}=", nil self.send container_column + '=', nil self.save! end # Do this to make sure that the reordering below doesn't # cause a number to be duplicated temporarily (which would # cause a validation error) later_items.sort_by!{|item| item.send(number_field)} later_items.each do |later| later.send("#{number_field}=", later.send(number_field)-1) later.save! end end
Protected Instance Methods
assign_number()
click to toggle source
# File lib/openstax/utilities/acts_as_numberable.rb, line 203 def assign_number if self.send(number_field).nil? self.send("#{number_field}=", my_class .where(container_column => self.send(container_column)) .count) end end