38 lines
1.2 KiB
Ruby
38 lines
1.2 KiB
Ruby
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
|