Ciao,
mi trovo un po nei casini, credo di aver strutturato correttamente il
mio db ma ho dei problemi ad effettuare una query.
In breve ho una table Travels e una Locations e ogni travel ha più locations
il punto è che io quando faccio la query ho le condizioni sulle location
ma voglio prendere i viaggi, mi spiego meglio, la query mi restituisce
tutti i viaggi che hanno le locations filtrate secondo le condizioni ma
il problema è che mi restituisce le sole locations su quelle
condizioni(come giusto che sia alla fine)
@travels = Travel.find(:all,
:include => [:user,:location],
:conditions => [“locations.place = ? OR locations.country_id = ? OR
period = ? OR MONTH(travel_departure) = ?”,
params[:search_item],country_id,params[:search_item],params[:search_item]
])
questa query mi ridà un array di travels ciascuno con le relative
location, il punto è che mi da solo quelle che fanno match con le
conditions mentre io vorrei tutti i viaggi con tutte le location del
viaggio.
Un esempio banale è: cerco un viaggio che contenga il termine “roma” e ho
un viaggio che va da Roma a Madrid, in questo caso la query mi
restituisce si il viaggio ma con la sola location Romal.
La soluzione è banale dovrei fare una query per prendere tutte le
locations che fanno match e da li prendere tutti i relativi travel con
travel_id uguale a quello delle location, in questo modo avrei gli id
dei travel che fanno match e potrei estrarre tutte le reelative
locations.
La domanda è, si può far in modo più intelligente?
Saluti Andrea