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