jam-cloud/ruby/lib/jam_ruby/models/music_notation.rb

39 lines
966 B
Ruby

module JamRuby
class MusicNotation < ActiveRecord::Base
include JamRuby::S3ManagerMixin
self.primary_key = 'id'
attr_accessible :file_url, :size
belongs_to :user, :class_name => "JamRuby::User", foreign_key: :user_id
belongs_to :music_session, :class_name => "JamRuby::MusicSession", foreign_key: :music_session_id
mount_uploader :file_url, MusicNotationUploader
before_destroy :delete_s3_files
validates :file_url, :presence => true
validates :size, :presence => true
before_validation do
if file_url.present? && file_url_changed?
self.size = file_url.file.size
end
end
def s3_url
s3_manager.s3_url(self[:file_url])
end
def sign_url(expiration_time = 120)
s3_manager.sign_url(self[:file_url], {:expires => expiration_time, :secure => false})
end
private
def delete_s3_files
s3_manager.delete(self[:file_url]) if self[:file_url]
end
end
end