这是应用程序中的常见模式,我确信它有一个优雅的解决方案,但对于我的生活,我找不到答案。一个大问题是我不知道该怎么称呼它!
我正在尝试找到适当的解决方案,为系统的每个用户提供一次性通知。当该用户确认或关闭通知时,他们不再亲自看到它,但其他用户将在他们确认之前。
这在执行维护通知,新功能,登机等时很常见。
显然,这需要作为一个标志生活在某个数据库中,这个特定的标志已经承认了这个特定的信息,但是如果没有经过深思熟虑的计划来实现这些,这似乎很快就会变得沉重和笨拙。
答案 0 :(得分:2)
请参阅my answer类似的问题。
消息作为序列化数组存在于我的用户模型中。这样我可以使用简单的数组方法,如#push
来获取新消息。用户只处理特定于他们的邮件,使用#delete_at
取消单个邮件,或#clear
取消所有邮件。
对于广播通知,您可以做一些令人讨厌的事情:
User.all.map {|x| x.messages.push "You have been notified." ; x.save }
,如果不经常使用的话,并不是那么重要。