I currently have an activity model that handles a user activity notification system. An activity observer creates a new activity when some action happens (such as a new article
Please have a look at this gem: https://github.com/ledermann/unread
It's written by me and handles read/unread status of any ActiveRecord objects in a more performant way.