jam-cloud/ruby/lib/jam_ruby/models/join_request.rb

47 lines
1.6 KiB
Ruby
Raw Normal View History

module JamRuby
class JoinRequest < ActiveRecord::Base
include HtmlSanitize
html_sanitize strict: [:text]
REQUESTOR_MUST_BE_A_MUSICIAN = "requestor must be a musician"
self.primary_key = 'id'
belongs_to :user, :class_name => "JamRuby::User"
2014-05-06 13:34:38 +00:00
belongs_to :music_session, :class_name => "JamRuby::MusicSession", :foreign_key => "music_session_id"
has_many :invitations, :inverse_of => :join_request, :class_name => "JamRuby::Invitation"
validates :user, :presence => true
validates :music_session, :presence => true
validates :text, no_profanity: true, length: {maximum: 140} # arbitrary decision of 140. the database is at 2000 max on this field
validates_uniqueness_of :user_id, :scope => :music_session_id
validate :requestor_is_musician
# list all paginations for the current user
def self.index(current_user)
# TODO pagination
return JoinRequest.where("join_requests.user_id = '#{current_user.id}'").order('join_requests.created_at DESC')
end
def requestor_is_musician
unless user.musician?
errors.add(:user, REQUESTOR_MUST_BE_A_MUSICIAN)
end
end
def to_s
return "#{self.user.to_s}:#{self.music_session.to_s}"
end
# permissions:
# only the creator of the join request can do a get
# or a member of the music_session that the join_request is designated for
def self.show(id, user)
return JoinRequest.find(id, :conditions => ["user_id = ? OR music_session_id IN (select music_session_id from connections WHERE user_id = ?)", user.id, user.id])
end
end
2013-07-26 08:07:24 +00:00
end