将复杂的 Sql 查询转换为 Rails

Convert a complex Sql query to Rails

我在我的应用程序中使用 gem geokit rails。我有一个包含各种地址的 table。我正在尝试使用 geokit 功能 by_distance 查找按距原点的距离排序的记录。

所以我现在正在做这个。

@close = Mytable.by_distance(:origin => "12 wall street, NY")

所以这里发生的是MyTable中的所有id都按顺序存储在@close中,这意味着最接近的是数组的第一个元素。

实际上我只需要距离 Mytable 最近的两个地址。所以我想知道该怎么做?因为我当前的代码按顺序为我提供了 table 中所有最近地址的列表。我不想表现不佳,因为我只需要 2 个最近的站点。

请建议如何实现。

你应该试试这个:

@close = Mytable.by_distance(:origin => "12 wall street, NY").limit(2)

请注意,by_distance 查询已经进行了尽可能好的优化,向查询中添加 limit 不会对您的性能产​​生任何影响,但它应该也不会减慢您的应用程序。

一如既往,在您的控制台中对其进行测试,看看生成的 SQL 语句是什么样的,并且没有发生任何奇怪的事情。您可能还希望将两者相互比较以确保确定。