我如何建模"连接" Ruby on Rails上的Doctor-Patient之间的关系

时间:2014-03-21 17:28:46

标签: ruby-on-rails ruby

我正在使用Ruby on Rails为我的论文创建一个面向医生和患者的电子健康监控Web应用程序。我的问题是:

是否有任何简单的方法可以创建Connection选项,如LinkedIn所示,我可以在医生和患者之间使用?

我一直在考虑它,我的方法是在我的数据库中创建一个名为Connection的新实体,它将存储doctor_idpatient_id属性。

我如何创建所需的必要验证? 例如,如果患者没有与医生联系,他们就不能向医生发送信息,或者如果没有连接,他们就看不到某些信息。

我正在寻找一种方法或指导我如何解决这个问题。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以采用的一种方法是在模型中编写一个方法,以便检查关系是否干净。例如,如果您想检查患者是否与医生联系,您可以在Patient模型中添加类似的内容:

患者模型

def connected?(doc)
  return true if Connection.where(:patient_id => self.id, :doctor_id => doc.id).count > 0
  false
end

然后,只要您的应用中有患者和医生的实例,您就可以通过传递connected?方法来检查它们是否已连接。例如,假设您的对象为@patient@doctor。您可以像这样检查他们的连接:

if @patient.connected?(@doctor)
  # do stuff, like send message
end

当然,使用此方法的方法可能会因您尝试完成的内容而有很大差异。在整个地方继续写if语句会变得非常混乱。但是,我倾向于让应用程序先运行,然后专注于清理代码。

修改

正如Phlip所提到的,如果您的Connection模型不包含任何数据,则删除模型并在PatientDoctor之间使用has_and_belongs_to_many关系更为简单{1}}。

我仍然会使用Patient和/或Doctor模型中的方法来检查连接是否存在。然后,如果您需要向连接添加数据,则可以轻松创建Connection模型,而无需编辑控制器/视图。