Ruby on rails Rails-如何按排名获取记录

Ruby on rails Rails-如何按排名获取记录,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个城市模型,其中包含城市及其各自人口的名称。我将如何编写一种方法,通过一系列排名显示城市 例如,我希望能够将两个数字传递给排名高端的方法,一个传递给排名低端的方法。也就是说,我可以通过get_cities_by_pop(1,10)获得人口排名前十的城市,而get_cities_by_pop(20,35)将获得人口排名第20-35的城市 到目前为止,我只有: def get_cities_by_pop(high, low) cities = City.all.order('populat

我有一个城市模型,其中包含城市及其各自人口的名称。我将如何编写一种方法,通过一系列排名显示城市

例如,我希望能够将两个数字传递给排名高端的方法,一个传递给排名低端的方法。也就是说,我可以通过get_cities_by_pop(1,10)获得人口排名前十的城市,而get_cities_by_pop(20,35)将获得人口排名第20-35的城市

到目前为止,我只有:

def get_cities_by_pop(high, low)
  cities = City.all.order('population DESC')
end

但是我不知道该如何写这个逻辑。

你在网上有你需要的一切

您可以使用limit指定要检索的记录数, 并使用偏移量指定要跳过的记录数 开始返回记录。比如说

Client.limit(5)
将返回最多5个客户端,因为它未指定偏移量 它将返回表中的前5个。它执行的SQL看起来 像这样:

SELECT * FROM clients LIMIT 5
加上偏移量

Client.limit(5).offset(30)
将从31日开始最多返回5个客户端。 SQL看起来像:

SELECT * FROM clients LIMIT 5 OFFSET 30

在这种情况下,最终结果如下所示:

Client.order('population DESC').offset(high-1).limit(low)

你的电脑上有你需要的一切

您可以使用limit指定要检索的记录数, 并使用偏移量指定要跳过的记录数 开始返回记录。比如说

Client.limit(5)
将返回最多5个客户端,因为它未指定偏移量 它将返回表中的前5个。它执行的SQL看起来 像这样:

SELECT * FROM clients LIMIT 5
加上偏移量

Client.limit(5).offset(30)
将从31日开始最多返回5个客户端。 SQL看起来像:

SELECT * FROM clients LIMIT 5 OFFSET 30

在这种情况下,最终结果如下所示:

Client.order('population DESC').offset(high-1).limit(low)

<>你也可以考虑这个问题:

def get_cities_by_pop(high, low)
  City.where(population >= ? AND population <= ?, low, high).order('population DESC')
end
def按pop获取城市(高、低)

城市(人口>=和人口

),你可能会认为这也是

def get_cities_by_pop(high, low)
  City.where(population >= ? AND population <= ?, low, high).order('population DESC')
end
def按pop获取城市(高、低)

City.where(population>=?和population在本例中,最终结果如下:
Client.order('population DESC').offset(high-1).limit(low)
谢谢!我就知道会是这样简单。在本例中,最终结果如下:
Client.order('population DESC').offset(high-1).limit(low)
谢谢!我就知道事情会这么简单。