Ruby on Rails: ассоциация моделей с несколькими внешними ключами

Я работаю надUser модель, и каждый пользователь должен иметь возможность иметь как студентов, так и преподавателей. Тем не менее, так какученик а такжеучитель оба типаUserМоя модель немного усложнилась.

Это то, что я сейчас пытаюсь.

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

пользователь

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

Если все работает, как я хотел, я должен быть в состоянии сделать

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

Я думаю, что единственная проблема с вышесказанным заключается в том, что я могудать два внешних ключа одновременноteacher_student_link, но я'Я не уверен. В качестве обходного пути я нев моей модели еще нет teacher_id, и я просто делаюstudent.user позвонитьteacher, Кто-нибудь может мне помочь с этим вопросом?

Обновить: С решением ниже, как я должен создать новую ссылку?

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

Если я делаю это так, правильно ли соединяются ученик и учитель? Я немного смущен, потому что в TeacherStudentLink есть,userstudentteacher, и я'Я не уверен, как бороться с созданием ссылок.

Ответы на вопрос(1)

Ваш ответ на вопрос