我正在寻找一种解决方案来通知所有用户应用程序中发生 X 活动。
我不是在寻找通过邮件或短信通知。因为此特定通知将发送给所有用户,这些用户可能介于 1000 到 25000 个用户之间。发送 1000 多封邮件或短信是浪费资源。
我想使用一些被注意到的东西来通知用户,那就是他们会阅读。 例如:如果 X 活动发生在今天。Y用户在10天后登录,他/她必须能够看到通知(我想在这种情况下闪存消息不起作用(。
什么是最好和最有效的方法? 如果使用数据库进行通知是我认为的方式。如何创建单个通知(数据库中的单个条目(并确保所有用户在下次登录时都阅读该通知?不创建 1000 行?
通知存储在数据库中也是要走的路。
如果在User
模型和Notification
模型之间添加多对多关系,并在关系数据透视表上使用is_read
标志。
然后,当用户阅读通知时,您将is_read
标志更新为1
。或者,如果不需要保留该用户的通知,则可以删除关系,从而减少过时记录的存储。
编辑
如果每个用户始终会看到每个通知,则可以将last_login_at
时间戳存储在User
模型上,该时间戳会在用户每次登录时更新。
然后,每次用户登录时,查找自last_login_at
以来创建的所有Notification
并向用户显示。