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

51 lines
1.5 KiB
Ruby

include Devise::Models
module JamRuby
class TextMessage < ActiveRecord::Base
self.primary_key = 'id'
default_scope order('created_at DESC')
attr_accessible :target_user_id, :source_user_id, :message
belongs_to :target_user, :class_name => "JamRuby::User", :foreign_key => "target_user_id"
belongs_to :source_user, :class_name => "JamRuby::User", :foreign_key => "source_user_id"
validates :message, length: {minimum: 1, maximum: 400}, no_profanity: true
def self.index(target_user_id, source_user_id, options = {})
offset = options[:offset]
limit = options[:limit]
# if not specified, default offset to 0
offset ||= 0
offset = offset.to_i
# if not specified, default limit to 10
limit ||= 10
limit = limit.to_i
TextMessage
.offset(offset)
.limit(limit)
.where('(source_user_id = (?) AND target_user_id = (?)) OR (source_user_id = (?) AND target_user_id = (?))', source_user_id, target_user_id, target_user_id, source_user_id)
end
def self.create(message, target_user_id, source_user_id)
sanitized_text = Sanitize.fragment(message, elements: HtmlSanitize::SAFE)
# create new message
tm = TextMessage.new
tm.message = sanitized_text
tm.target_user_id = target_user_id
tm.source_user_id = source_user_id
# send notification
@notification = Notification.send_text_message(sanitized_text, source_user_id, User.find_by_id(target_user_id))
tm
end
end
end