将复杂的Sql查询转换为Rails

时间:2015-05-02 05:19:33

标签: ruby-on-rails ruby geokit

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

所以我现在正在这样做。

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

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

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

请建议如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

你应该试试这个:

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

请注意,by_distance查询已经过优化,并且在查询中添加limit不会在性能方面为您做任何激进的事情,但它应该也不会减慢你的申请速度。

与往常一样,在您的控制台中测试它以查看生成的SQL语句的外观,并且没有什么奇怪的事情发生。您可能还希望将两者相互对比以确定。