jam-cloud/lib/jam_ruby/models/invitation.rb

33 lines
1.2 KiB
Ruby

module JamRuby
class Invitation < ActiveRecord::Base
FRIENDSHIP_REQUIRED_VALIDATION_ERROR = "You can only invite friends"
MEMBERSHIP_REQUIRED_OF_MUSIC_SESSION = "You must be a member of the music session to send invitations on behalf of it"
self.primary_key = 'id'
belongs_to :sender, :inverse_of => :sent_invitations, :class_name => "JamRuby::User", :foreign_key => "sender_id"
belongs_to :receiver, :inverse_of => :received_invitations, :class_name => "JamRuby::User", :foreign_key => "receiver_id"
belongs_to :music_session, :inverse_of => :invitations, :class_name => "JamRuby::MusicSession"
validates :sender, :presence => true
validates :receiver, :presence => true
validates :music_session, :presence => true
validate :require_sender_in_music_session, :require_are_friends
private
def require_sender_in_music_session
unless music_session.users.exists? sender
errors.add(:music_session, MEMBERSHIP_REQUIRED_OF_MUSIC_SESSION)
end
end
def require_are_friends
unless receiver.friends.exists? sender
errors.add(:receiver, FRIENDSHIP_REQUIRED_VALIDATION_ERROR)
end
end
end
end