The simplest example here to think of are Facebook notifications, for example when somebody posts a comment on your status, likes your photo, or just sends you an invite to some
I have an Alert model on my site. When something happens an alert gets added and other users see the alert when they login. Important is to have a dismiss field, so a user can dismiss an alert, so the user won't see the same alert over and over again. It also has an area field, so you can connect the alert to a certain part of the website and it has a detail_link field, to give the user a link he can click on to go to see what the alert is about.
I use my existing User
model for this, by way of a serialized messages
array.
Add a messages
column (TEXT
type) to your user table, via migration:
add_column :users, :messages, :text, :null => false, :default => "--- []"
Then serialize it in your user
model:
serialize :messages, Array
Now, you can do this:
# Add messages
@user.messages.push "You have a new message!"
# Read messages
@user.messages # => ["You have a new message!"]
# Clear one message
@user.messages.delete_at(0)
# Clear all messages
@user.messages.clear
# Get message counts
@user.messages.empty? # => true
@user.messages.count # => 0
If you need more detailed messages with multiple parameters (from, subject, importance), you could always use a hash instead.