我正在研究User
模型,每個用戶都應該能夠同時擁有學生和教師。然而,由於學生和老師都是User
類型,我的模型有點複雜。Ruby on Rails:Model Association with multiple foreign keys
這就是我現在正在嘗試的。
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
我認爲,唯一的問題ABOV e是我不能同時給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中,有user
,student
,teacher
,我不知道如何處理創建鏈接。
太棒了!像魅力一樣工作。 –
非常好,很高興我能幫到你。 :) –
等一下,我還有一個問題。當我想要創建鏈接時,我很困惑。你能檢查我的更新嗎? –