Sha256: 7fa13f50db8b1b4b975c226cdecbcfa2b511d2e3813c5b461b88faa790e06fb5

Contents?: true

Size: 1.38 KB

Versions: 7

Compression:

Stored size: 1.38 KB

Contents

require "carrierwave"
require "carrierwave/orm/activerecord"
module Adminpanel
	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

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
adminpanel-1.2.4 app/models/adminpanel/gallery.rb
adminpanel-1.2.3 app/models/adminpanel/gallery.rb
adminpanel-1.2.2 app/models/adminpanel/gallery.rb
adminpanel-1.2.1 app/models/adminpanel/gallery.rb
adminpanel-1.2.0 app/models/adminpanel/gallery.rb
adminpanel-1.1.0 app/models/adminpanel/gallery.rb
adminpanel-1.0.0 app/models/adminpanel/gallery.rb