Ruby on rails 有没有办法判断activerecord查询是否达到极限

Ruby on rails 有没有办法判断activerecord查询是否达到极限,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,给出以下查询: Cars.where(color: red).limit(5) 有没有办法判断是否达到了极限。假设有6辆红色汽车,我需要单独查询以计算红色汽车的总数吗 基本上,我试图向用户发送一条消息,让他们知道由于达到了允许的最大结果数,搜索受到了限制。将其合并到一个查询中的唯一方法是进行限制(6)。如果大小为6,则删除最后一个元素并记录它们的结果 或者,单独查询Cars.where(颜色:红色)。count。虽然这将执行单独的SQL查询,但计数查询有时对于数据库来说非常快。对您的问题的直接

给出以下查询:

Cars.where(color: red).limit(5)
有没有办法判断是否达到了极限。假设有6辆红色汽车,我需要单独查询以计算红色汽车的总数吗


基本上,我试图向用户发送一条消息,让他们知道由于达到了允许的最大结果数,搜索受到了限制。

将其合并到一个查询中的唯一方法是进行限制(6)。如果大小为6,则删除最后一个元素并记录它们的结果


或者,单独查询Cars.where(颜色:红色)。count。虽然这将执行单独的SQL查询,但计数查询有时对于数据库来说非常快。

对您的问题的直接回答是,您无法在一次查询中返回此信息。您必须运行两个查询:一个用于返回有限的集合,另一个用于查找总计数

只有在查询结果的第一页(偏移量为0)且返回的结果数小于限制值(例如,将限制设置为5,但返回4个结果)时才不需要这样做

示例代码如下所示:

    limit = 5
    cars_scoped = Cars.where(color: red)
    cars = cars_scoped.limit(limit)
    cars_count = cars.length < limit ? cars.length : cars_scoped.count
limit=5
cars\u scoped=cars.where(颜色:红色)
cars=范围内的cars\限制(限制)
车辆数量=车辆长度<限制?车数.长度:车数

如果您显示的是最后5个结果,则在下一页之前,技术上不会达到限制-此时您将知道,因为您已收到<5个结果。哇,这是一个很好的回答(您的第一个建议)!我以后会记住这一点的。是的,我喜欢第一个想法。如果结果足够少,你已经知道了,就避免第二次查询count。美好的