Module: ReadActivity::Readable::InstanceMethods

Defined in:
lib/read_activity/readable.rb

Instance Method Summary collapse

Instance Method Details

#read_by!(reader) ⇒ Object



26
27
28
29
30
31
# File 'lib/read_activity/readable.rb', line 26

def read_by!(reader)
  ReadActivityMark.transaction do
    mark = self.read_activity_marks.where(reader: reader).first_or_initialize
    mark.save!
  end
end

#read_by?(reader) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/read_activity/readable.rb', line 33

def read_by?(reader)
  mark = self.read_activity_marks.exists?(reader: reader)
end

#read_by_at(reader = nil) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/read_activity/readable.rb', line 37

def read_by_at(reader = nil)
  read_by_at = nil

  if self.read_activity_marks.loaded?
    read_by_at = self.read_activity_marks.first.try(:created_at)
  end

  if read_by_at.nil? && reader
    if reader.read_activity_marks.loaded?
      read_by_at = reader.read_activity_marks.first.try(:created_at)
    else
      read_by_at = self.read_activity_marks.where(reader: reader).first.try(:created_at)
    end
  end

  return read_by_at
end

#readersObject



55
56
57
# File 'lib/read_activity/readable.rb', line 55

def readers
  Reader.klass.send(:find_who_read, self)
end

#unreadersObject



59
60
61
# File 'lib/read_activity/readable.rb', line 59

def unreaders
  Reader.klass.send(:find_who_unread, self)
end