Module: ActsAsReadable::ClassMethods
- Defined in:
- lib/acts_as_readable/acts_as_readable.rb
Instance Method Summary collapse
-
#cache_readings_for(readables, user) ⇒ Object
Find all the readings of the readables by the user in a single SQL query and cache them in the readables for use in the view.
-
#read_by!(user) ⇒ Object
Mark all records as read by the user If a :cache option has been set in acts_as_readable, a timestamp will be updated on the user instead of creating individual readings for each record.
-
#unread_by!(user) ⇒ Object
Mark all records as unread by the user If a :cache option has been set in acts_as_readable, a timestamp will be cleared on the user as well as deleting all readings for that user with this class as the readable type.
Instance Method Details
#cache_readings_for(readables, user) ⇒ Object
Find all the readings of the readables by the user in a single SQL query and cache them in the readables for use in the view.
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/acts_as_readable/acts_as_readable.rb', line 57 def cache_readings_for(readables, user) readings = [] Reading.where(:readable_type => HelperMethods.readable_type(self), :readable_id => readables.collect(&:id), :user_id => user.id).each do |reading| readings[reading.readable_id] = reading end for readable in readables readable.cached_reading = readings[readable.id] || false end return readables end |
#read_by!(user) ⇒ Object
Mark all records as read by the user If a :cache option has been set in acts_as_readable, a timestamp will be updated on the user instead of creating individual readings for each record
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/acts_as_readable/acts_as_readable.rb', line 72 def read_by!(user) if user.has_attribute?([:cache]) Reading.where(:user_id => user.id, :readable_type => HelperMethods.readable_type(self)).delete_all user.update_column([:cache], Time.now) else unread_by(user).find_each do |record| record.read_by!(user) end end end |
#unread_by!(user) ⇒ Object
Mark all records as unread by the user If a :cache option has been set in acts_as_readable, a timestamp will be cleared on the user as well as deleting all readings for that user with this class as the readable type
85 86 87 88 89 90 91 92 93 94 |
# File 'lib/acts_as_readable/acts_as_readable.rb', line 85 def unread_by!(user) if user.has_attribute?([:cache]) Reading.where(:user_id => user.id, :readable_type => HelperMethods.readable_type(self)).delete_all user.update_column([:cache], nil) else read_by(user).find_each do |record| record.unread_by!(user) end end end |