我在为我正在构建的新应用程序确定型号名称时遇到了问题。这些都是重要的决定,所以我想确保它是正确的。这将是一个保存医疗记录的数据库,因此可以记录接受医疗服务的人、他们的家人、医生、护士/行政人员、事故目击者等。
我不是为每种类型的人都有一个特定的表,而是考虑只做“人”和“用户”模型。“用户”模型将容纳所有为医疗机构工作的人,而“人”表将容纳其他所有人--例如病人和事故目击者。
我仍然有一个问题,因为如果一个用户记录了一个事故,一个“用户”可能是目击者,另一个可能是受害者。它基本上使我的应用程序看起来不灵活,因为我将“人”(患者等)和“用户”(员工等)分成了系统中的两个固定位置。
那么,为什么我不能为每个人创建一个名为“People”的表呢?然后,一个人可以是用户,员工,医生,病人,受害者-或者他们的任意组合。
我们是否被教导要始终命名为我们工作的人,并登录到系统的“用户”?这很重要吗?
对每个人都有一个叫“Person”的桌子有什么负面影响吗?这似乎让事情变得更容易了。任何人都可以是用户(通过启用有效的登录/状态进行登录),也可以是非用户。我没有看到这一点的负面影响。
发布于 2013-01-12 13:44:40
你和我始终是人,但我们在某些情况下扮演特定的角色--那么,如果设置中所有人都由一个名为"Person“的模型表示,并由需要这些角色的特定类链接到这些人,情况会怎样呢?例如:
class Person < ActiveRecord::Base
...
end
class HospitalEmployee
belongs_to :user, class_name: 'Person' # foreign key is user_id
end
class MedicalRecord < ActiveRecord::Base
belongs_to :patient, class_name: 'Person' # foreign key is patient_id
...
end
class Accident < ActiveRecord::Base
belongs_to :victim, class_name: 'Person' # foreign key is victim_id
belongs_to :witness, class_name: 'Person' # foreign key is witness id
end通过这种方式,构成一个人的数据总是恒定的,但构成他们所扮演的角色的数据存储在其他模型中。
你会发现这种设置经常出现--例如,在我工作过的一所大学,所有与个人有关的记录都指向一个主" PEOPLE“文件--后来成为雇员的学生在这两种情况下都使用同一个PEOPLE文件中的记录。
发布于 2013-01-12 13:29:30
你可以为所有人做一张桌子。这可以使用单表继承来完成。我建议您将User用作父对象,将其他人用作子对象(员工、患者)。您需要在用户表中创建类型字段。它将存储用户的类型。
欲了解更多信息,请访问:http://rookieonrails.blogspot.in/2008/01/single-table-inheritance-in-rails.html
发布于 2013-01-12 13:42:11
我倾向于创建特定和通用的模型--用户有一个人,员工有一个人。Person模型只包含姓名、id、电子邮件等基本信息。特定于特定角色的所有内容都在特定于角色的模型中(例如,用户),但是因为您总是可以从任何相关模型返回到该人员,所以您可以,例如,查看给定人员拥有的所有角色。
https://stackoverflow.com/questions/14290535
复制相似问题