В вопросе было неясно, нужно ли сохранять уведомления во время сеансов или от пользователя к пользователю (которые могут не быть в сети одновременно);тем не менее, у меня была похожая потребность в приложении 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.