Ruby on rails gem向用户显示一次性消息。

时间:2012-08-26 11:00:52

标签: ruby-on-rails

是否有任何宝石或库可用于向用户显示一次消息?我正在寻找能让我做到的事情:

  • 当用户首次登录时,显示“欢迎登机”全覆盖。 (并且仅在第一次)
  • 较小的下拉式覆盖图,告知用户可能会在接下来的24小时内进行维护,或者他们需要做一些事情(填写他们的个人资料等)。这将显示,直到被解雇。

我对此有点困惑,因为我不知道这些消息通常被称为什么。这些一次性消息是否有名称?

1 个答案:

答案 0 :(得分:3)

有很多方法可以实现这样的通知系统,您的要求非常基本,所以我会坚持使用flash

的基本方法

首次登录时显示消息:

您应该跟踪用户上次登录的情况并计算登录次数,以便您可以这样做:

  • 在用户模型中添加一个字段“last_login_at”,每次用户登录时都会更新,并在注册后将其设置为NULL。当用户登录时,检查last_login_at是否为NULL,如果是,则将消息设置为闪存,如flash[:first_login] = true,那么如果设置了此标志,则可以在模板中呈现特殊的欢迎消息。

  • 更好的方法是添加像login_counter这样的字段,每次用户登录时都会增加,所以如果它为零,则用户首次登录。登录计数器还可以帮助您识别经常登录的“活跃”用户等。

有一个名为devise的流行身份验证系统,内置了这些(以及更多!)功能:https://github.com/plataformatec/devise

显示维护警告等

我创建了一个名为SystemMessage的新模型,其中包含以下字段:

id | message_type | title | body | valid_from | valid_until

message_type属性描述了“维护通知”,“新功能”等类型的消息,具体取决于您可以呈现不同模板的消息类型并调整消息的外观。 / p>

valid_fromvalid_until属性可让您控制消息应在哪个时间范围内显示。

在每次请求您获取这些消息并将其显示给用户时,您还可以定期缓存消息以减少查询量。请查看有关缓存的rails指南:http://guides.rubyonrails.org/caching_with_rails.html

要通知页面空闲的用户,您可以实现每五分钟左右触发一次的AJAX请求并获取消息并检查是否有比已显示的消息更新的消息。

如果您需要实时显示特定于用户的消息(例如您有5封新邮件,有人对您的帖子发表评论等),您可以使用像'Faye'这样的pub-sub消息系统(教程:{{ 3}}或只是google for“rails 3 faye”)

我希望这是你的起点:)