62 lines
1.4 KiB
Ruby
62 lines
1.4 KiB
Ruby
module JamRuby
|
|
class Track < ActiveRecord::Base
|
|
|
|
self.table_name = "tracks"
|
|
|
|
self.primary_key = 'id'
|
|
|
|
default_scope order('created_at ASC')
|
|
|
|
SOUND = %w(mono stereo)
|
|
|
|
belongs_to :connection, :class_name => "JamRuby::Connection", :inverse_of => :tracks
|
|
belongs_to :instrument, :class_name => "JamRuby::Instrument", :inverse_of => :tracks
|
|
|
|
validates :sound, :inclusion => {:in => SOUND}
|
|
|
|
def self.index(current_user, music_session_id)
|
|
query = Track
|
|
.joins(
|
|
%Q{
|
|
INNER JOIN
|
|
connections
|
|
ON
|
|
connections.music_session_id = '#{music_session_id}'
|
|
AND
|
|
connections.id = connection_id
|
|
AND
|
|
connections.user_id = '#{current_user.id}'
|
|
INNER JOIN
|
|
music_sessions
|
|
ON
|
|
music_sessions.id = '#{music_session_id}'
|
|
AND
|
|
music_sessions.user_id = '#{current_user.id}'
|
|
}
|
|
)
|
|
|
|
return query
|
|
end
|
|
|
|
def self.save(id, connection_id, instrument_id, sound)
|
|
if id.nil?
|
|
track = Track.new()
|
|
track.connection_id = connection_id
|
|
else
|
|
track = Track.find(id)
|
|
end
|
|
|
|
unless instrument_id.nil?
|
|
track.instrument_id = instrument_id
|
|
end
|
|
|
|
unless sound.nil?
|
|
track.sound = sound
|
|
end
|
|
|
|
track.updated_at = Time.now.getutc
|
|
track.save
|
|
return track
|
|
end
|
|
end
|
|
end |