43 lines
1.0 KiB
Ruby
43 lines
1.0 KiB
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
|
|
|
|
def filename
|
|
File.basename(self.file_url)
|
|
end
|
|
|
|
private
|
|
|
|
def delete_s3_files
|
|
s3_manager.delete(self[:file_url]) if self[:file_url]
|
|
end
|
|
end
|
|
end |