2015-12-14 2 views
2

У меня есть 3 модели Passenger, Taxi, Order Я хочу получить определенный столбец этих таблиц. Я использовал это, чтобы присоединиться к ним успешно.Activerecord выбрать столбцы из запроса тройного соединения

Taxi.joins(:orders => :passenger).where(:taxi =>{:taxi_id =>2 }) 

Я хочу, чтобы выбрать некоторые из столбцов таблицы пассажирской и некоторые из колонны порядка, , но я не знаю, как я могу это сделать?

Другая проблема заключается в том, что результат этого запроса только столбцы такси и не колонна taxi+order+passenger

Я думаю, что у меня есть проблемы с моим запросом

+0

'Такси .joins (заказы:: пассажир) .where (taxi: {taxi_id: 2}) .select ('passengers.column_name, orders.column_name') ' –

+0

Я узнаю, что мой запрос дает мне только записи, относящиеся только к Такси , somthing like leftjoin – Salman

+0

указать, что происходит м, и я дам вам ответ, как достичь. Прокомментируйте, что работает/не работает. –

ответ

0
Taxi.joins(orders: :passenger).where(taxi:{taxi_id: 2}).includes(orders: :passenger).map do |taxi| 
    #this will not query again as the includes directive above already fetched 
    taxi.orders.map {|p| puts p} 
end 
1
Taxi 
    .joins(orders: :passenger) 
    .where(taxi: {taxi_id: 2 }) 
    .pluck('passengers.column_name, orders.column_name') 
+0

Этот ответ помог мне. У меня было соединение двух таблиц, где появились только столбцы первой таблицы. Добавление pluck решило мою проблему. –