Ruby on rails Rails-如何按排名获取记录
我有一个城市模型,其中包含城市及其各自人口的名称。我将如何编写一种方法,通过一系列排名显示城市 例如,我希望能够将两个数字传递给排名高端的方法,一个传递给排名低端的方法。也就是说,我可以通过get_cities_by_pop(1,10)获得人口排名前十的城市,而get_cities_by_pop(20,35)将获得人口排名第20-35的城市 到目前为止,我只有: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
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)
谢谢!我就知道事情会这么简单。