0

多くの教師生徒がいる学校の 3 つのモデルがあります。問題は、StudentがSchoolまたはTeacherのいずれかに属することができるため、理論的には常に関連付けを通じてSchoolに属することです。Rails/Active Record でこのタイプのデータ構造を処理するにはどうすればよいですか?

    class School < AR::Base
      has_many :teachers
      has_many :students

    end

    class Teacher < AR::Base
      belongs_to :school
      has_many :students

    end

    class Student < AR::Base
      belongs_to ???

    end
4

2 に答える 2

0

この解決策はうまくいくはずですが、あなたの紹介には疑問があります。あなたは「先生には多くの生徒がいる」と言います。この文は、「生徒には 1 人の教師がいる」という意味です。

has_and_belongs_to_many 関連付けを設定する必要があるかもしれません。

class School < AR::Base
  has_many :teachers
  has_many :students, :through => :teachers
end

class Teacher < AR::Base
  belongs_to :school
  has_many :students
end

class Student < AR::Base
  belongs_to :teacher
  belongs_to :school, :through => :teacher
end
于 2013-03-01T10:56:50.497 に答える
0

明らかに、ポリマーフィックな関連付けが必要です。次のように実行できます。

class School < AR::Base
 has_many :teachers
 has_many :students, :as => :studentable
end

class Teacher < AR::Base
 belongs_to :school
 has_many :students
end

class Student < AR::Base
 belongs_to :studentable
end

studentable_id と studentable_type を学生モデルに追加することを忘れないでください。

于 2013-03-01T12:55:02.330 に答える