通知声称有 X 个用户待批准,但未找到任何用户

我在提交 bug 报告之前搜索时发现了这个主题,所以在此补充一下。

简而言之,通知的查询是错误的,因为它也计算了被拒绝的用户。

通知:16 位用户等待批准,点击链接,只看到 2 位。

通知使用的查询是这样的:

puts AdminUserIndexQuery.new(query: "pending", stats: false).find_users_query.to_sql

SELECT "users".* FROM "users"
WHERE (suspended_till IS NULL OR suspended_till <= '2023-11-13 11:05:23.225614')
AND "users"."approved" = FALSE
AND "users"."active" = TRUE
ORDER BY users.created_at DESC,users.username

在我的情况下,这会给我 16 位用户:

[4479, 4472, 4456, 4446, 4443, 4430, 4302, 4291, 4206, 4199, 4178, 4168, 4131, 4061, 3677, 3642]

将这些 ID 放入 Reviewables 队列会给我 2 位实际需要批准的用户(状态为 0),以及 14 位已被拒绝的用户(状态为 2):

ReviewableUser.where(type: 'ReviewableUser')
  .where(target_id: ids)
  .pluck(:target_id, :status)

[[3642, 2], [3677, 2], [4061, 2], [4131, 2], [4168, 2],
[4178, 2], [4199, 2], [4206, 2], [4291, 2], [4302, 2],
[4430, 2], [4443, 2], [4446, 2], [4456, 2], [4472, 0], [4479, 0]]
2 个赞