私は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
上記の唯一の問題は、 に同時に 2 つの外部キーを渡すことができないことだと思いますが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
このようにすると、生徒と教師は正しくペアになりますか? user
TeacherStudentLink には、student
、があり、リンクの作成方法がわからないため、少し混乱していteacher
ます。