require 'net/http' class AlbumImage include Mongoid::Document include Mongoid::Timestamps include OrbitTag::Taggable mount_uploader :file, GalleryUploader field :title field :title_translations, type: Hash, default: {} field :description, type: String, localize: true, default: "" field :rss2_id, type: String field :order, type: Integer, default: -1 belongs_to :album has_many :album_crops, :autosave => true, :dependent => :destroy accepts_nested_attributes_for :album_crops, :allow_destroy => true # has_and_belongs_to_many :tags, :class_name => "GalleryTag" index({"order" => 1}, { unique: false, background: false }) before_create do tmp_album = self.album min_order = nil if tmp_album min_order = tmp_album.min_order min_order = -1 if min_order == 0 end if min_order.nil? self.order = -Time.now.to_i else tmp_order = min_order - 1 self.order = tmp_order Album.where(:id=>tmp_album.id).update_all(:min_order=>tmp_order) #present call save callback twice due to autosave end true end after_destroy do min_order = Album.where(:id=>self.album_id).pluck(:min_order).first puts "min_order: #{min_order} #{self.order}" if self.order == min_order Album.where(:id=>self.album_id).update_all(:min_order=>min_order + 1) end end before_save do if self.file_changed? cover = self.album['cover'] if cover && cover == self.id self.album.update_attributes({:cover_path => self.file.thumb.url, :cover=> self.id}) end end end def title_translations tmp = super || {} if tmp == {} tmp = I18n.available_locales.collect{|locale| [locale,self[:title]]}.to_h end tmp end def title self.title_translations[I18n.locale] end end