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

52 lines
1.5 KiB
Ruby
Raw Normal View History

2015-01-12 06:20:19 +00:00
include Devise::Models
module JamRuby
class TextMessage < ActiveRecord::Base
self.primary_key = 'id'
default_scope { order('created_at DESC') }
2015-01-12 06:20:19 +00:00
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
2015-01-12 06:26:27 +00:00
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
tm.save
2015-01-12 06:26:27 +00:00
# send notification
@notification = Notification.send_text_message(sanitized_text, User.find(source_user_id), User.find(target_user_id))
2015-01-12 06:26:27 +00:00
tm
end
2015-01-12 06:20:19 +00:00
end
end