我需要为我正在开发的应用程序创建一个类似Facebook的通知系统。我想知道你们有什么建议来做这个?如果可能,我想避免使用数据库的通知,如果这是可行的,我想知道如何。
提前谢谢

最佳答案

这个问题不清楚通知是否需要跨会话或用户对用户(可能不在同一时间联机)持续存在;但是,我在rails应用程序上有类似的需求,并通过notice-activerecord模型实现了它。它用于在网站的每个页面上广播停机时间和其他待处理事件。通知将在预定时间提前显示。

class Notice < ActiveRecord::Base
  validates_presence_of  :header
  validates_presence_of  :body
  validates_presence_of  :severity
  validates_presence_of  :start_time
  validates_presence_of  :end_time
  validates_inclusion_of :severity, :in => %( low normal high )
end

由于它需要在任何地方都显示,因此向applicationhelper添加了一个helper方法,以便一致地显示它:
module ApplicationHelper
  def show_notifications
    now = DateTime.now.utc
    noticeids = Notice.find(:all, :select=>"id", :conditions=>['start_time >= ? or (start_time <= ? and end_time >= ?)', now, now, now])
    return "" if noticeids.count == 0 # quick exit if there's nothing to display
    # ...skipping code..
    # basically find and return html to display each notice
  end
end

最后,在应用程序布局中有一小段代码可以使用applicationhelper的show-notifications方法。

10-08 06:22