Ruby on Rails: Associação de modelos com várias chaves estrangeiras

Estou trabalhando em umUser modelo, e cada usuário deve ter alunos e professores. No entanto, desdealuna eprofessor ambos são um tipo deUsermeu modelo ficou um pouco complicado.

É isso que estou tentando agora.

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

Do utilizador

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

Se tudo funcionar como eu pretendia, eu deveria ser capaz de fazer

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

Eu acho que o único problema acima é que eu não posso dar duas chaves estrangeiras ao mesmo tempo parateacher_student_link, mas eu não tenho certeza. Como solução alternativa, ainda não tenho o arquivo teacher_id no meu modelo estudent.user chamar oteacher. Alguém pode me ajudar com essa questão?

Atualizar: Com a solução abaixo, como devo criar um novo link?

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

Se eu fizer assim, o aluno e o professor estão emparelhados corretamente? Estou um pouco confuso porque no TeacherStudentLink, existemuser, student, teachere não sei como lidar com a criação de links.

questionAnswers(1)

yourAnswerToTheQuestion