summaryrefslogtreecommitdiff
path: root/users/app/models/message.rb
blob: 7c05e06224e745ba4b808bcbabb4d68b60bd6e1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Message < CouchRest::Model::Base

  use_database :messages

  property :text, String
  property :user_ids_to_show, [String]
  property :user_ids_have_shown, [String] # is this necessary to store?

  timestamps!

  design do
    own_path = Pathname.new(File.dirname(__FILE__))
    load_views(own_path.join('..', 'designs', 'message'))
  end

  def mark_as_read_by(user)
    user_ids_to_show.delete(user.id)
    # is it necessary to keep track of what users have already seen it?
    user_ids_have_shown << user.id unless read_by?(user)
    # TODO: is it quicker to call uniq! after adding rather than check if it is already included?
  end

  def read_by?(user)
    user_ids_have_shown.include?(user.id)
  end

  def unread_by?(user)
    user_ids_to_shown.include?(user.id)
  end
end