2017-08-17 67 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;