我有一个如下所示的查询:
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,返回的行不包括那些没有列出所有连接的行。
是否有一种简单的方法来获取所有列出的行,并允许我仍然查询具有查询的单个链接表?
答案 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}")