是否有任何宝石或库可用于向用户显示一次消息?我正在寻找能让我做到的事情:
我对此有点困惑,因为我不知道这些消息通常被称为什么。这些一次性消息是否有名称?
答案 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_from
和valid_until
属性可让您控制消息应在哪个时间范围内显示。
在每次请求您获取这些消息并将其显示给用户时,您还可以定期缓存消息以减少查询量。请查看有关缓存的rails指南:http://guides.rubyonrails.org/caching_with_rails.html
要通知页面空闲的用户,您可以实现每五分钟左右触发一次的AJAX请求并获取消息并检查是否有比已显示的消息更新的消息。
如果您需要实时显示特定于用户的消息(例如您有5封新邮件,有人对您的帖子发表评论等),您可以使用像'Faye'这样的pub-sub消息系统(教程:{{ 3}}或只是google for“rails 3 faye”)
我希望这是你的起点:)