Sha256: 73d8117e5b40125677703c6518915e1d4be19f439d00b87edb3c14f0b36e9bf7
Contents?: true
Size: 1.11 KB
Versions: 2
Compression:
Stored size: 1.11 KB
Contents
module UnreadMongoid module Readable module Scopes # TODO rename some of these def unread_by(user) self.not_in(_id: read_ids(user)) end def read_by(user) self.in(_id: read_ids(user)) end private def read_marks_query(user) assert_reader(user) ReadMark.where(readable_type: self.name, user_id: user._id) end def blanket_marks_query(user) read_marks_query(user).and(readable_id: nil).sort(timestamp: :desc) end def read_ids(user) specifically_marked_ids(user) + blanketed_ids(user) end def blanketed_ids(user) blanket = blanket_marks_query(user).first if blanket self.lte(self.readable_options[:on] => blanket.timestamp).only(:_id).map(&:_id) else [] end end def specifically_marked_ids(user) time_comparison = "this.timestamp >= this.readable_timestamp" read_marks_query(user).ne(readable_id: nil) .for_js(time_comparison) .only(:readable_id) .map(&:readable_id) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
unread-mongoid-0.0.3 | lib/unread_mongoid/scopes.rb |
unread-mongoid-0.0.2 | lib/unread_mongoid/scopes.rb |