给出以下查询:有没有办法判断一个ActiveRecord查询打了极限
Cars.where(color: red).limit(5)
有没有办法告诉如果限制被击中。假设有6辆红色汽车,我是否需要单独查询来计算红色汽车的总数?
基本上,我试图发送一条消息给用户,让他们知道搜索由于达到了允许的最大结果数量而受到限制。
给出以下查询:有没有办法判断一个ActiveRecord查询打了极限
Cars.where(color: red).limit(5)
有没有办法告诉如果限制被击中。假设有6辆红色汽车,我是否需要单独查询来计算红色汽车的总数?
基本上,我试图发送一条消息给用户,让他们知道搜索由于达到了允许的最大结果数量而受到限制。
您的问题的直接答案是,您无法在单个查询中获取此信息。您将不得不运行两个查询:一个返回有限集合,一个查找总计数。
唯一不需要的是当您查询结果的第一页(偏移量为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
如果结果足够少并且您已经知道,请避免再次查询count。尼斯。 –
如果要显示过去5年,限制在技术上并不打,直到下一个页面 - 在这一点,你就会知道,因为你已经收到<5个结果背部。 – VNO