我的Track.rb模型有以下代码。有没有办法用更多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
答案 0 :(得分:1)
首先,你真的需要missions
的左连接吗?您按missions.track_id
进行过滤,因此无需任务即可提交。在这种情况下,内部联接会更合适。
接下来,为什么需要加入tracks
- 你不要在下一个sql中使用这个表。
考虑到这些想法,您可以将代码重写为:
Submission.joins(:mission).where(missions: { track_id: track.id })