2014-09-23 142 views
0

我有下面的查询,将返回城市和状态是输入的设定点和表Metros的所有行之间的最短距离:设置多个变量,结果查询

@lat = row[latitude] 
@long = row[longitude] 

Metros.select(
     "major_city 
     , major_state 
     ,(latitude - " + @lat + ")**2 + (longitude - " + @long + ")**2 as 'distance'") 
      .group("major_city,major_state").limit(1).order('distance ASC') 

什么我现在需要做的是将结果设置为两个变量row[major_city]row[major_state],major_city设置为row[major_city]major_staterow[major_state]

我怎样才能完成这个任务两个允许独立设置两个变量?

回答

-1

它与ActiveRecord :: Relation类型即使它只是一个结果,所以使用.first,然后把它作为单个记录可能工作。

+0

你是什么意思把它作为一个单一的记录?你能提供一个例子吗? – Sauron 2014-09-23 15:44:14

+0

你的'选择'blabla事情出来的数据类型就像一个数组,只需按结果= [{:a => 1,:b => 2,:c => 3}]来设置示例,则不能根据行设置你想要的[major_city] = result.a,是你的问题吗?如果是这样,则更改为result.first.a。 – realwol 2014-09-23 15:53:37

+0

所以我可以将查询的结果设置为一个数组,因为它会返回像'@result = [纽约市,纽约]'',我会简单地设置'@majoy_city = @result [0]'和@ major_state = @result [1]'? – Sauron 2014-09-23 16:01:29