在我的ruby on rails应用程序中,我希望获得所有count
的{{1}},我正在执行以下操作:
users
它获取了所有未删除但仍希望获得所有用户的结果,包括@user = User.count
。
答案 0 :(得分:1)
@user = User.count
此处用户是数据库表,如果用户在计数之前被删除,那么.count
将不计算这些用户,因为它们在您当前的应用数据库中不再可用。
答案 1 :(得分:0)
如果您只想将计数作为粗略的限制,您可以检查用户表的最后一个ID。
如果删除的用户始终是最后插入的用户,这将不准确,但这可以让您了解它。
User.last.id
会做到这一点。
为什么这是一种骚动?
假设数据库中最后插入的用户的id = 499
如果您插入新用户,则需要id = 500.(此时User.last.id
返回500)
如果你删除id = 500的那个,你的最后一个id将是499,但是如果你插入一个新的id,它将采用id = 501(这对于mysql来说是真的,不知道其他数据库系统)
但这并不能确保您在数据库中同时存在501个用户:它只表示在users表中有501个插入,只要它从未被截断(因为截断将id计数器重置为0) )
答案 2 :(得分:0)
要获得预期的结果,您可以使用此gem paranoia
使用此gem时,如果删除用户,它将在逻辑上删除,而不是从数据库中删除,这样您就可以正确地获取用户数量。请阅读自述文件了解更多详情。