Ruby on rails RubyonRails双重关联

Ruby on rails RubyonRails双重关联,ruby-on-rails,associations,Ruby On Rails,Associations,我有一个学生可以对他们留下很多评论: class Student < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base belongs_to :student end 然而,评论必须属于与之相关的学生,也必须属于发表评论的学生。也就是说,评论需要同时属于两个不同的学生 如何做到这一点?在评论表中,您应该有一个评论者id和一个学生id,这样评论既可以属于评论者,也可以属于

我有一个学生可以对他们留下很多评论:

class Student < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :student
end
然而,评论必须属于与之相关的学生,也必须属于发表评论的学生。也就是说,评论需要同时属于两个不同的学生


如何做到这一点?

在评论表中,您应该有一个评论者id和一个学生id,这样评论既可以属于评论者,也可以属于学生

class Comment < ActiveRecord::Base
  belongs_to :student
  belongs_to :commenter, class_name: 'Student'
end

在comments表中,您应该有一个commenter_id和一个student_id,这样评论既可以属于commenter,也可以属于student

class Comment < ActiveRecord::Base
  belongs_to :student
  belongs_to :commenter, class_name: 'Student'
end

可能也想在这些列上添加索引,但取决于用例。可能也想在这些列上添加索引,但取决于用例。