【发布时间】:2018-08-14 22:12:32
【问题描述】:
我正在尝试为一所大学设计 Rails 5 应用程序。作为第一步,我尝试设计“部门”相关模型(一般单位),例如院系、职业学校、学院、本科课程、研究生课程等。但是我发现这个案例比我预期的要复杂一些。
以下是根据我的情况构建的真实数据结构:
University ->
-> Academies
-> Undergraduate Programs
-> Divisions
-> Undergraduate Programs
-> Departments
-> Vocational Schools
-> Undergraduate Programs
-> Divisions
-> Undergraduate Programs
-> Faculties
-> Undergraduate Programs
-> Departments
-> Divisions
-> Undergraduate Programs
-> Departments
您可以将所有这些模型视为嵌套的 has_many 关系。例如,一所大学拥有许多院系。一个教员有_many部门和has_many部门。一个教师部门 has_many 部门等。理论上,每个级别的行为都像一个新的 has_many。
例如,看一下Faculty。部门可以直接隶属于学院,也可以隶属于部门。但是,无论它们位于何处,它们都是部门,并且它们的行为方式完全相同。换句话说,为位于 Faculty 下的 Department 和 Divisions 下的 Department 创建不同的模型对于我的情况来说是非常重复和无意义的。本科课程也可以这样说。我正在寻找更好的选择。
我一开始想到了多态,但我不确定它是否是解决这个问题的正确方法。问题是,解决此类问题的最佳方法是什么?
【问题讨论】:
-
您是否需要某些模型(部门、部门、计划、学院、学校)的特定信息?还有其他未显示的不同模型吗?或者您可能想要一种灵活的方法并能够添加新类型的孩子。
-
是的 Pablo,所有这些模型都将有它们的自定义方法和行为。正如你所说,未来可能还会有更多的子模型。
标签: ruby-on-rails ruby-on-rails-5