需要Rails / Active Record多态关联?

时间:2013-03-01 10:47:45

标签: ruby-on-rails ruby activerecord polymorphism

我有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

2 个答案:

答案 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添加到学生模型中。