我可以通过哪些方式在Rails应用程序中实现通知?

Jak*_*old 1 queue notifications social-networking ruby-on-rails-3

这里最简单的例子就是Facebook通知,例如当有人发布你的状态评论,喜欢你的照片,或者只是向你发送邀请给某些游戏时.

在Rails应用程序中实现此功能有哪些方法,以便通知仅在用户阅读之前显示给用户,并且可能在不同平台上读取通知.

我不是在这里谈论使用服务器推送的类似实时聊天的通知,而是在某种方式向用户显示自上次访问网站以来发生的事情.

例如,我读了一篇文章,发表评论然后有人回复.下次登录时,我希望能够看到有人回复了我的评论.

想到的一个解决方案是拥有某种类型的Notification模型,该模型具有read属性,当用户访问该网站时,它将显示当前未读的所有通知.

没有使用关系数据库,有没有更好的方法来做到这一点?

Sub*_*ial 8

User通过序列化messages数组使用我现有的模型.

通过迁移将messages列(TEXT类型)添加到用户表:

add_column :users, :messages, :text, :null => false, :default => "--- []"
Run Code Online (Sandbox Code Playgroud)

然后在您的user模型中序列化它:

serialize :messages, Array
Run Code Online (Sandbox Code Playgroud)

现在,你可以这样做:

# 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
Run Code Online (Sandbox Code Playgroud)

如果您需要包含多个参数(来自主题,重要性)的更详细消息,则可以始终使用散列.