【问题标题】:Rails notification systemRails 通知系统
【发布时间】:2011-09-26 09:01:29
【问题描述】:

我需要为我正在开发的应用程序创建一个类似于 facebook 的通知系统。我想知道你们中的任何人对如何去做这件事有什么建议?如果可能,我想避免将数据库用于通知,如果可行,我很想知道如何。

提前致谢

【问题讨论】:

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


    【解决方案1】:

    问题中并不清楚通知是否需要跨会话或用户对用户(他们可能不会同时在线)持续存在;但是,我对 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 方法。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-28
        • 1970-01-01
        • 2011-07-18
        • 2013-05-08
        • 1970-01-01
        相关资源
        最近更新 更多