我正在使用允许用户上传和下载图片的应用。与Snapchat类似,他们可以查看他们所关注的人的照片。 24小时后,这些照片将被移动到存档表中,以便用户将无法再看到它们。我用mysql分区完成了这个方面。
但是,在客户端,我需要不断更新mysql查询,其中包含照片表中最后一行的日期。我将此日期存储在iOS应用程序中。如果用户注销并允许其他人登录,则会出现问题。我必须清除此数据,并且现在还没有为任何一个用户提供参考点。
我有解决方案来解决这个问题,我想知道它是多么可行。我会创建一个触发器,每次用户检索照片时都会运行。它将更新用户表上的一列,该列将保存他们查看的最后日期。这样,当任何用户重新登录时,我将引用他们查看的最后日期。这是一个好主意吗?我对如何改进这种方法提出了任何建议,看看我需要如何保存图片而不是仅仅删除图片。
*请注意分区可以正常工作,但因为我需要确保照片持续至少24小时,一些照片最终会持续超过24小时,这样用户仍然可以看到照片
照片表
* id:二进制16
* users_id:foreign:binary 16
* filename:varchar
* created_at:datetime
照片存储在亚马逊s3上
答案 0 :(得分:0)
添加列
Post.joins(:comments).uniq.where('.user_id = ?', user.id).count # => 9
Post.joins(:comments).uniq.where('comments.user_id != ?', user.id).count # => 20
在上传时将可见设置为1。 还将now()放入created_at datetime。
创建活动见下文:
http://www.mysqltutorial.org/mysql-triggers/working-mysql-scheduled-event/
每天或每隔6小时运行一次,无论如何。可以改为cron任务。
当该东西运行时,对于超过1天的任何东西,它都设置为0。
当用户看到某人的个人资料图片时,他们只看到可见的= 1张图片。
发布图片的人看到了他所有的照片。
所以它是自动化的,你可以在开关处睡着了。