Ruby on rails 获取包括已删除用户在内的所有用户的计数

Ruby on rails 获取包括已删除用户在内的所有用户的计数,ruby-on-rails,Ruby On Rails,在我的ruby on rails应用程序中,我希望获得所有用户的计数,我正在做如下工作: @user = User.count 它向我获取所有未删除用户的结果,但我希望获取所有用户的计数,包括已删除的用户+未删除的用户 @user = User.count 此处用户是数据库表如果用户在计数之前被删除,则。计数将不计数这些用户,因为它们在您当前的应用程序数据库中不再可用。如果您只想粗略估计计数,您可以检查用户表的最后一个id 如果删除的用户始终是最后一个插入的用户,则这将不准确,但这会让您了解

在我的ruby on rails应用程序中,我希望获得所有
用户的
计数
,我正在做如下工作:

@user = User.count
它向我获取所有未删除用户的结果,但我希望获取所有用户的计数,包括已删除的
用户+未删除的用户

@user = User.count

此处用户是数据库表如果用户在计数之前被删除,则
。计数将不计数这些用户,因为它们在您当前的应用程序数据库中不再可用。

如果您只想粗略估计计数,您可以检查用户表的最后一个id

如果删除的用户始终是最后一个插入的用户,则这将不准确,但这会让您了解这一点

User.last.id
我会成功的

为什么这是一个估计

假设数据库中最后插入的用户id=499。
如果插入新用户,则需要id=500。(此时
User.last.id
返回500)

Iif如果删除id=500的,则最后一个id为499,但如果插入新id,则id为501(对于mysql是这样,对于其他数据库系统则不知道)


但这并不能确保数据库中同时存在501个用户:这只意味着只要用户表从未被截断(因为截断会将id计数器重置为0),则该表中就有501个插入。

要获得预期结果,您可以使用此gem


有了这个gem,当您删除一个用户时,它将被逻辑删除,而不是从数据库中删除,这样您就可以正确地获得用户数量。查看自述文件了解更多详细信息。

如果用户已被删除,他们将不再在数据库中,因此您无法对他们进行计数。当您可以获得相同“成本”的准确值时,进行估计有什么意义?这是一种估计,因为如果最后插入的用户被删除,则该计数将不准确。可以查询数据库以了解当前的id计数。。。如果您找到了如何做到这一点,请随意编辑answer@Fer
User.last.id+1