2017-08-17 26 views
0

我有國家,城市和位置表。我想將它們中的3個組合起來,只獲得名稱列作爲數組。例如;Rails加入3表並只提取名稱作爲數組

國家

id: 1, name: 'Russia', lat: .., lng: .. 
id: 2, name: 'France', lat: .., lng: .. 
id: 3, name: 'Spain', lat: .., lng: .. 

id: 1, name: 'Kiev', lat: .., lng: .. 
id: 2, name: 'Nice', lat: .., lng: .. 
id: 3, name: 'Barcelona', lat: .., lng: .. 

位置 國家

id: 1, name: 'Burger Restaurant', lat: .., lng: .. 
id: 2, name: 'La baguette', lat: .., lng: .. 
id: 3, name: 'Tapas Bar', lat: .., lng: .. 

所以,我要求應該是這樣的;

myArray = ['Russia', 'France', 'Spain', 'Kiev', 'Nice', 'Barcelona', 'Burger Restaurant', 'La baguette', 'Tapas Bar'] 

該項目的順序並不重要,它可以被打亂,因爲我想在typehead.js使用它們。我也不想用循環將它們推入數組中。我正在尋找更快,更有效的方法。

回答

4

你可以這樣做:

def locations 
countries = Country.all.pluck(:name) 
    cities = City.all.pluck(:name) 
    location_countries = LocationCountry.all.pluck(:name) 

    countries + cities + location_countries 
end 
1

您可以使用UNION查詢,例如:

SELECT name FROM country 

UNION 

SELECT name FROM city 

UNION 

SELECT name FROM location_country;