0

案子:

表:

  1. teacher :id :name

  2. course :id :name

  3. teachercourse :id :teacher_id :course_id

如何使用导轨对这 3 个表进行内部连接?

编辑(我的模型):

class Course < ActiveRecord::Base
  attr_accessible :name
  has_many :teachercourses
  has_many :teachers, through: :teachercourse
end

class Teacher < ActiveRecord::Base
  attr_accessible :name
  has_many :teachercourses
  has_many :courses, through: :teachercourse
end

class Teachercourse < ActiveRecord::Base
  attr_accessible :course_id, :teacher_id
  belongs_to :course
  belongs_to :teacher
end

Edit2 - 我需要加入结果(显示操作):

class CourseController < ApplicationController
  def show
    #not real syntax
    @course=Course.find(join:teacher,teachercourse,teacher :: where course='javacourse');
  end
end
4

1 回答 1

3

你的 Teacher 和 Course 模型都应该包含has_many :teachercourses

然后,如果你在 Teacher 模型中编写代码,它应该是这样的:

joins(teachercourses: :course)

编辑:

如果我理解您发布的代码背后的意图,那么您正在寻找所有在 java 课程中任教的老师。所以这应该工作:

Teacher.joins(teachercourses: :course).where(course: {name: "javacourse"})
于 2012-08-15T09:19:09.057 回答