我有3个模型,学校,其中有许多教师和学生。问题是学生可以属于学校或教师,所以理论上他们总是属于学校 >通过协会。我如何在Rails / Active Record中处理这种类型的数据结构?
class School < AR::Base
has_many :teachers
has_many :students
end
class Teacher < AR::Base
belongs_to :school
has_many :students
end
class Student < AR::Base
belongs_to ???
end
答案 0 :(得分:0)
这个解决方案应该可行,但是你对我的介绍有疑问;你说“老师有很多学生”。这句话意味着“学生有一位老师”。
也许你应该设置一个has_and_belongs_to_many关联。
class School < AR::Base
has_many :teachers
has_many :students, :through => :teachers
end
class Teacher < AR::Base
belongs_to :school
has_many :students
end
class Student < AR::Base
belongs_to :teacher
belongs_to :school, :through => :teacher
end
答案 1 :(得分:0)
显然你需要多元关联,可以做为
class School < AR::Base
has_many :teachers
has_many :students, :as => :studentable
end
class Teacher < AR::Base
belongs_to :school
has_many :students
end
class Student < AR::Base
belongs_to :studentable
end
不要忘记将studentable_id和studentable_type添加到学生模型中。