app/models/adminpanel/gallery.rb in adminpanel-0.1.0 vs app/models/adminpanel/gallery.rb in adminpanel-0.1.1

- old
+ new

@@ -4,7 +4,58 @@ class Gallery < ActiveRecord::Base attr_accessible :file mount_uploader :file, Adminpanel::GalleryUploader validates_presence_of :file + before_create :set_position + before_destroy :rearrange_positions + + + default_scope { order("position ASC")} + + + def move_to_better_position + if position > 1 + conflicting_gallery = Gallery.find_by_position(position - 1) + update_attribute(:position, position - 1) + conflicting_gallery.update_attribute( + :position, conflicting_gallery.position + 1 + ) + true + else + false + end + end + + def move_to_worst_position + records = Gallery.count + if position < records + conflicting_gallery = Gallery.find_by_position(position + 1) + update_attribute(:position, position + 1) + conflicting_gallery.update_attribute( + :position, conflicting_gallery.position - 1 + ) + true + else + false + end + end + + private + def rearrange_positions + unarranged_galleries = Gallery.where("position > ?", position) + unarranged_galleries.each do |gallery| + gallery.update_attribute(:position, gallery.position - 1) + end + + end + + def set_position + last_record = Gallery.last + if last_record.nil? + self.position = 1 + else + self.position = last_record.position + 1 + end + end end end \ No newline at end of file