2014-09-23 179 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