Rails通知系统

时间:2011-09-26 09:01:29

标签: ruby-on-rails ruby ruby-on-rails-3 notifications

我需要为我正在处理的应用创建一个类似facebook的通知系统。我想知道你们有什么建议去做这件事?如果可能的话,我想避免使用数据库进行通知,如果这是可行的,我很想知道如何。

提前致谢

2 个答案:

答案 0 :(得分:2)

在问题中不清楚是否需要通知会话或用户对用户(可能不在同一时间在线);但是,我对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中添加了一个帮助方法,以便始终如一地显示它:

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方法的代码很少。

答案 1 :(得分:0)

Rails有一个默认的通知系统 - 闪存。您可以在Flash中传递自己的消息,然后使用一些CSS和JS以前端的任何方式显示它们。请谷歌周围寻找一些插件,看看它们是否符合您的要求,尽管不应该很难自己实施。