有没有办法判断activerecord查询是否达到了限制

时间:2013-01-07 18:43:06

标签: ruby-on-rails rails-activerecord

给出以下查询:

Cars.where(color: red).limit(5)

有没有办法判断是否达到了限制。假设有6辆红色汽车,我是否需要单独查询以计算红色汽车的总数?

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

唯一不需要的时间是查询结果的第一页(偏移量为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