在 Rails 应用程序中使用 STI 的正确时间是什么时候?经过大量阅读(包括这篇优秀的 Railscast),我仍然不确定什么是满足我需求的最佳方法。
这个(人为的)例子说明了我的困境。
假设一个用户类可以分为几个子类,包括医生和病人。这些不仅仅是简单的角色,具有关键数据和逻辑差异。
医生具有某些数据库字段(例如,资格、专业)、某些视图逻辑(例如,if User.doctor? then
显示患者列表)以及某些逻辑和角色(例如,可以管理患者记录)。
患者具有不同的数据库字段(例如血型)、视图逻辑(例如if User.patient? then
显示治疗列表)和逻辑(例如可以编辑预约)。
Doctors 和 Patients 都有:username, :email, :password
共同的领域,以及在应用程序的其余部分(例如,User has_many :comments, :messages, etc
)中的大量逻辑。
根据我的阅读,患者和医生有不同的逻辑要求这一事实表明 STI 可能是合适的。但是对于不同的数据库字段,多态可能是更好的方法。
但....
用户可以同时是医生和患者。
有没有解决这个问题的“最佳方法”?