diff --git a/lib/jam_ruby/models/band_invitation.rb b/lib/jam_ruby/models/band_invitation.rb index 720f532cb..94a830fd3 100644 --- a/lib/jam_ruby/models/band_invitation.rb +++ b/lib/jam_ruby/models/band_invitation.rb @@ -11,35 +11,22 @@ module JamRuby def self.save(id, band_id, user_id, creator_id, accepted) - # ensure recipient is a Musician - user = User.find(user_id) - unless user.musician? - raise JamRuby::JamArgumentError, "A Band invitation can only be sent to a Musician." - end - + # ensure certain fields are only updated on creation if id.nil? + # ensure recipient is a Musician + user = User.find(user_id) + unless user.musician? + raise JamRuby::JamArgumentError, "A Band invitation can only be sent to a Musician." + end + band_invitation = BandInvitation.new() + band_invitation.band_id = band_id + band_invitation.user_id = user_id + band_invitation.creator_id = creator_id + + # only the accepted flag can be updated after initial creation else band_invitation = BandInvitation.find(id) - end - - # band ID - unless band_id.nil? - band_invitation.band_id = band_id - end - - # user ID - unless user_id.nil? - band_invitation.user_id = user_id - end - - # creator ID - unless creator_id.nil? - band_invitation.creator_id = creator_id - end - - # accepted flag - unless accepted.nil? band_invitation.accepted = accepted end @@ -49,7 +36,7 @@ module JamRuby # TODO: wrap this and previous block in transaction # accepting an invitation adds the musician to the band if accepted - BandMusician.create(:band_id => band_id, :user_id => user_id, :admin => false) + BandMusician.create(:band_id => band_invitation.band.id, :user_id => band_invitation.receiver.id, :admin => false) end return band_invitation