反馈 关于收藏功能取消后依然存在列表中的问题

bindiry · 2017年03月13日 · 最后由 jiejie1314 回复于 2017年03月15日 · 5545 次阅读

今天在清理过期收藏的贴子的时候,反馈一下发现两个问题:

  • 分页有重复项,具体为翻到第二页后,发现有多个在第一页出现过的重复收藏项。
  • 取消某些贴子的收藏后,刷新收藏列表页,那个本该消失的收藏项依然存在,点进帖子里可以看到已经取消收藏了。

环境:

  • 系统:macOS 10.12.3
  • 浏览器:Chrome 56.0.2924.87 (64-bit)

说明:

  • 截图 1 和截图 2 中前几项可以看出有重复
  • 截图 3 和截图 4 可以看到第一项的状态是不收藏,但是这个贴子还存在于我的收藏里面。

截图 1 截图1

截图 2 截图2

截图 3 截图3

截图 4 截图4

截图,我试了一下,没有重现

huacnlee 回复

好了华顺,已补充截图和说明。

bindiry 关闭了讨论。 03月13日 17:03

不小心点击了关闭评论按钮,现在重新打开了,那个按钮要是有个确认框就好了。

缓存问题吧。

我调整了一下,你再试试看

huacnlee 回复

我重新测试了一下,两个问题还存在,难道真是缓存问题?

bindiry 回复

靠,貌似 Kaminari 的 Bug,我重现出来了

@topics.cache_key 计算好像不对


ActiveRecord many to many 场景 cache_key 计算出来 timestamp 是内容的

Rails 的 cache_key -> collection_cache_key, ref: https://github.com/rails/rails/blob/92703a9ea5d8b96f30e0b706b801c9185ef14f0e/activerecord/lib/active_record/collection_cache_key.rb#L3

@topics.cache_key -> topics/query-fd1fdb6d9a3658838c61f1b985d75c8e-104-20170227041933359644

topics/query-fd1fdb6d9a3658838c61f1b985d75c8e-104-20170227041933359644 -> topics/query-<digest-of-sql>-<rows>-<max updated_at of Topic>

而我们的场景是正好遇到这个 Bug(或许不算?),topics 是通过 many-to-many 的方式拿出来的 current_user.favorite_topics -> 来自于 Action Model,所以 collection_cache_key 计算的最后个 timestamp 一直都不变,是因为收藏改变的时候,Topic 的没有变的。

bindiry 关闭了讨论。 03月24日 09:13
需要 登录 后方可回复, 如果你还没有账号请 注册新账号