Staff tags cause duplicate tag index

继续讨论 ActiveRecord::RecordNotUnique on idx_tag_users_ix1:如何修复?

错误已重现。我认为我正在追踪这个 bug。

重现步骤

  1. 创建一个标签 #foo

  2. 将标签 #foo 的使用限制为仅限 Staff

  3. 创建一个群组 Bar

  4. 为群组 Bar 分配对标签 #foo 的“Watching”通知

  5. 让一个非特权用户加入群组 Bar

  6. 并将他们对 #foo 的个人通知更改为“Normal”

  7. 非特权用户将无法再阅读页面

怀疑这就是正在发生的事情,因为它已经发生在两个不同的人身上两次了。错误是这样的:https://oxygen.offdem.net/logs/show/f70207d3affa8967932b9122d2be212b

也许标题有点限制性。我认为这更多地与标签对群组的限制和个人通知有关。

所有新用户现在都有一个重复条目,必须从控制台中删除:

 r = TagUser.connection.execute("SELECT user_id, tag_id, count(*) FROM tag_users GROUP BY tag_id, user_id HAVING count(*) > 1")
r.values.each { |uid,tag,_| TagUser.where(user_id: uid, tag_id: tag).last.destroy }

我不确定我是否正确地重现了问题……

  • 创建标签组

  • 在标签组中创建 #staff-tag 标签

  • 将“标签对所有人可见,但只有以下组可以使用它们”设置为 staff

  • 创建组

  • /manage/tags 中,将 #staff-tag 添加到“关注”

  • 将测试用户(TL2)添加到组

  • 在“偏好设置/跟踪”中确认 #staff-tag 对测试用户为“关注”

  • 导航到 /tags/staff-tag 并将铃铛图标更改为“正常”

一切似乎都正常?

我不确定这一步。我使用了组通知来将标签添加到组的“Watching”通知中。

我是指这个页面:

我可能缩写了链接 - /g/GROUPNAME/manage/tags

或者我需要从别的地方尝试?

我真的不知道。在 OFFDEM 之前我没法花太多时间在这上面。目前,我正在运行 SQL 请求来解决新用户遇到的问题。也许我忽略了一个细节。比如……所有类别默认都是静音的,这可能会影响通知。

这可能很重要。您是否为此使用了“默认静音所有类别”设置?

1 个赞

是的,我确实使用了这个设置。