我如何用 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 })
我的 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.
有了这些想法,您可以将代码重写为:
Submission.joins(:mission).where(missions: { track_id: track.id })