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 に答える