Files
fizzy/app/models/card/readable.rb
T

35 lines
713 B
Ruby

module Card::Readable
extend ActiveSupport::Concern
def read_by(user)
notifications_for(user).tap do |notifications|
notifications.each(&:read)
end
end
private
def notifications_for(user)
user.notifications.unread.where(source: notification_sources)
end
def notification_sources
event_notification_sources + mention_notification_sources
end
def event_notification_sources
events + comment_creation_events
end
def comment_creation_events
Event.where(eventable: comments)
end
def mention_notification_sources
mentions + comment_mentions
end
def comment_mentions
Mention.where(source: comments)
end
end