ActiveRecord连接查询的问题

时间:2014-11-25 20:34:06

标签: ruby-on-rails join activerecord rails-activerecord

我在使用ActiveRecord解决查询时遇到问题。查询描述为:"返回与代理创建的旅行相关联的路线"

这是我试过的:

trips = Trip.where("agent_id = ? AND is_itinerary", params[:id])
        .joins('LEFT JOIN itineraries ON trips.id = itineraries.trip_id LEFT JOIN users ON itineraries.user_id = users.id')
         .select('trips.*, itineraries.status, users.*')

结果似乎没问题,但问题是记录的返回ID。它们是重复的,而不是Trip.id看起来像返回的id是User.id。

有人知道如何解决它吗?也许改变默认的分组策略?

表格是:行程(id,trip_id,user_id),Trips(id,...),用户(id,...)

1 个答案:

答案 0 :(得分:0)

最后,我可以解决原始查询分离的问题:

trips = Trip.where("agent_id = ? AND is_itinerary", params[:id]).joins('LEFT JOIN itineraries ON trips.id = itineraries.trip_id').select('trips.*, itineraries.status')
            trips = trips.joins("LEFT JOIN users ON itineraries.user_id = users.id").select("users.*")

以这种方式执行用户。*属性不会覆盖Trips属性。