我如何用 Rails 3.2 语​​法编写此 SQL 查询?

How would I write this SQL query in Rails 3.2 syntax?

我的 Track.rb 模型有以下代码。有什么方法可以使用 more Rails 语法来编写它吗?我正在使用 Rails 3.2

@track = Track.find(7)


Submission.joins("LEFT JOIN missions ON missions.id = submissions.mission_id")
          .joins("LEFT JOIN tracks ON tracks.id = missions.track_id")
          .where("missions.track_id = ?", track.id)

型号:

Track.rb
   has_many :missions

Mission.rb
   belongs_to :track
   has_many :submissions

Submission.rb
   belongs_to :mission

首先,missions真的需要左连接吗?您按 missions.track_id 筛选,因此您不需要没有任务的提交。在这种情况下,内部联接会更合适。

接下来,为什么要加入tracks——你在接下来的sql.

中不用这个table

有了这些想法,您可以将代码重写为:

Submission.joins(:mission).where(missions: { track_id: track.id })