ActiveRecord中的外部联接用于复杂的连接

时间:2013-12-27 11:01:18

标签: sql ruby-on-rails activerecord join

我有一个如下所示的查询:

Flight.joins(:airline, 
             flight_legs:[:departure_airport,:arrival_airport,
                aircraft:[aircraft_model:[:aircraft_make]]]).where('flights.user_id = ?',@current_user.id).order("#{sort_column} #{sort_direction}")

有点大,是的。我遇到的问题是因为它是一个INNER JOIN,返回的行不包括那些没有列出所有连接的行。

是否有一种简单的方法来获取所有列出的行,并允许我仍然查询具有查询的单个链接表?

1 个答案:

答案 0 :(得分:2)

我认为这将解决您的问题

Flight.joins("LEFT JOIN airlines ON airlines.id=flights.airline_id LEFT JOIN flight_legs ON flight_legs.id= flights.flight_leg_id LEFT JOIN departure_airports ON flight_legs.departure_airport_id=departure_airport_id LEFT JOIN arrival_airports ON arrival_airports.id=flight_legs.arriavak_airport_id LEFT JOIN aircrafts ON flights.aircraft_id=aircrafts.id LEFT JOIN aircraft_models ON aircraft_model.id=aircrafts.aircraft_model_id LEFT JOIN aircraft_makes ON aircraft_makes.id=aircraft_model.aircraft_make_id").where('flights.user_id = ?',@current_user.id).order("#{sort_column} #{sort_direction}")