module JamRuby class RsvpRequest < ActiveRecord::Base belongs_to :user, :class_name => "JamRuby::User" belongs_to :rsvp_slot, :class_name => "JamRuby::RsvpSlot" validates :message, length: {maximum: 1000}, no_profanity: true validates :chosen, :inclusion => {:in => [nil, true, false]} validates :canceled, :inclusion => {:in => [nil, true, false]} validates :rsvp_slot, presence: true def self.requests_by_session(session, user = nil) query = RsvpRequest .includes(:user) .joins( %Q{ INNER join rsvp_slots rs ON rsvp_requests.rsvp_slot_id = rs.id } ) .where( %Q{ rs.music_session_id = '#{session.id}' } ) query = query.where("rsvp_requests.user_id = '#{user.id}'") unless user.nil? return query end # XXX we need to validate that only one RsvpRequest.chosen = true for a given RsvpSlot # in other words, you can have many requests to a slot, but only 0 or 1 rsvp_request.chosen = true) end end