diff --git a/lib/jam_ruby/models/musician_recording.rb b/lib/jam_ruby/models/musician_recording.rb deleted file mode 100644 index 30293ce6c..000000000 --- a/lib/jam_ruby/models/musician_recording.rb +++ /dev/null @@ -1,14 +0,0 @@ -module JamRuby - class MusicianRecording < ActiveRecord::Base - - self.table_name = "musicians_recordings" - - attr_accessible :user_id, :recording_id - - # musicians - has_many :musicians, :through => :musician_recordings, :class_name => "JamRuby::User" - - belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "user_id" - belongs_to :recording, :class_name => "JamRuby::Recording", :foreign_key => "recording_id" - end -end \ No newline at end of file diff --git a/lib/jam_ruby/models/recorded_track.rb b/lib/jam_ruby/models/recorded_track.rb index 940ceff36..64e9b5a4e 100644 --- a/lib/jam_ruby/models/recorded_track.rb +++ b/lib/jam_ruby/models/recorded_track.rb @@ -14,8 +14,9 @@ module JamRuby validates :sound, :inclusion => {:in => SOUND} # Copy an ephemeral track to create a saved one. Some fields are ok with defaults - def self.create_from_track(track) + def self.create_from_track(track, recording) recorded_track = self.new + recorded_track.recording = recording recorded_track.user_id = track.connection.user.id recorded_track.instrument_id = track.instrument_id recorded_track.sound = track.sound diff --git a/lib/jam_ruby/models/recording.rb b/lib/jam_ruby/models/recording.rb index 7d3fed13d..13d40f6fa 100644 --- a/lib/jam_ruby/models/recording.rb +++ b/lib/jam_ruby/models/recording.rb @@ -3,7 +3,8 @@ module JamRuby self.primary_key = 'id' - has_many :musician_recordings, :class_name => "JamRuby::MusicianRecording" + has_and_belongs_to_many :users, :class_name => "JamRuby::User" + belongs_to :owner, :class_name => "JamRuby::User", :inverse_of => :owned_recording belongs_to :band, :class_name => "JamRuby::Band", :inverse_of => :recording has_many :recorded_tracks, :class_name => "JamRuby::RecordedTrack", :foreign_key => :recording_id @@ -32,12 +33,17 @@ module JamRuby recording = Recording.new music_session.connections.each do |connection| - recording.musician_recordings << MusicianRecording.create(user_id: connection.user.id, recording_id: recording.id) + recording.users << connection.user connection.tracks.each do |track| - RecordedTrack.create_from_track(track) + RecordedTrack.create_from_track(track, recording) end end + + music_session.genres.each do |genre| + recording.genres << genre + end + # Note that I believe this can be nil. recording.band_id = music_session.band_id end @@ -189,4 +195,4 @@ module JamRuby end =end end - end \ No newline at end of file + end diff --git a/lib/jam_ruby/models/user.rb b/lib/jam_ruby/models/user.rb index 7d455ff5b..cb5c128f2 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -24,8 +24,8 @@ module JamRuby has_many :bands, :through => :band_musicians, :class_name => "JamRuby::Band" # recordings - has_many :musician_recordings, :class_name => "JamRuby::MusicianRecording", :foreign_key => "user_id" - has_many :recordings, :through => :musician_recordings, :class_name => "JamRuby::Recording" + has_many :owned_recordings, :class_name => "JamRuby::Recording" + has_and_belongs_to_many :recordings, :class_name => "JamRuby::Recording" # user likers (a musician has likers and may have likes too; fans do not have likers) has_many :likers, :class_name => "JamRuby::UserLiker", :foreign_key => "user_id", :inverse_of => :user