这里最简单的例子就是Facebook通知,例如当有人发布你的状态评论,喜欢你的照片,或者只是向你发送一些游戏邀请时。
在Rails应用程序中实现此功能的方法有哪些,以便通知仅在用户阅读之前显示给用户,并且可能能够在不同平台上读取通知。
我不是在这里谈论使用服务器推送的实时聊天通知,而是在某种方式向用户展示自上次访问网站以来发生的事情。
例如,我读了一篇文章并发表了评论然后有人回复了它。下次登录时,我希望能够看到有人回复了我的评论。
我想到的一个解决方案是使用某种Notification
模型,该模型具有read
属性,当用户访问该网站时,它会显示当前未读的所有通知
如果没有使用关系数据库,是不是有更好的方法呢?
答案 0 :(得分:8)
我使用现有的User
模型,通过序列化的messages
数组。
通过迁移将messages
列(TEXT
类型)添加到您的用户表中:
add_column :users, :messages, :text, :null => false, :default => "--- []"
然后在user
模型中序列化它:
serialize :messages, Array
现在,你可以这样做:
# 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
如果您需要包含多个参数(来自主题,重要性)的更详细消息,您可以随时使用散列。
答案 1 :(得分:0)
我的网站上有一个提醒模型。当某些事情发生时,会添加警报,其他用户在登录时会看到警报。重要的是有一个解雇字段,因此用户可以解除警报,因此用户不会一遍又一遍地看到相同的警报。它还有一个区域字段,因此您可以将警报连接到网站的某个部分,它有一个detail_link字段,为用户提供一个链接,他可以点击该链接查看警报的内容。