Ruby on Rails: Modellzuordnung mit mehreren Fremdschlüsseln

Ich arbeite an einemUser Modell, und jeder Benutzer sollte in der Lage sein, sowohl Schüler als auch Lehrer zu haben. Seitdem jedochStudent undLehrer sind beide eine Art vonUser, mein Modell wurde etwas kompliziert.

Das versuche ich gerade.

Teacher_student_link

class TeacherStudentLink < ActiveRecord::Base
  attr_accessible :student_id, :teacher_id, :user_id

  belongs_to :user
  belongs_to :teacher, :class_name => "User"
  belongs_to :student, :class_name => "User"
end

Nutzer

class User < ActiveRecord::Base
  has_many :teacher_student_links, :foreign_key => { :student_id, :teacher_id }, :dependent => :destroy
  has_many :students, :through => :teacher_student_links
  has_many :teachers, :through => :teacher_student_links
end

Wenn alles so funktioniert, wie ich es wollte, sollte ich es können

@user = User.new
@user.students
@user.teachers
@user.student.teachers

Ich denke, das einzige Problem mit oben ist, dass ich nicht zwei Fremdschlüssel gleichzeitig geben kannteacher_student_link, aber ich bin mir nicht sicher. Als Workaround habe ich noch keine teacher_id in meinem Modell und mache es einfachstudent.user das anrufenteacher. Kann mir jemand bei diesem Problem helfen?

Aktualisieren: Wie kann ich mit der folgenden Lösung einen neuen Link erstellen?

def become_student
  @user = user.find(params[:id])
  @student_link = @user.student_links.create(:student_id => current_user.id)
  @teacher_link = current_user.teacher_links.create(:teacher_id => @user.id)
end

Wenn ich das so mache, sind der Schüler und der Lehrer richtig gepaart? Ich bin ein wenig verwirrt, weil es im TeacherStudentLink gibtuser, student, teacherIch bin mir nicht sicher, wie ich mit dem Erstellen von Links umgehen soll.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage