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
, teacher
Ich bin mir nicht sicher, wie ich mit dem Erstellen von Links umgehen soll.