在本笔记模型中写什么来检测当前用户是医生还是患者?

时间:2018-02-04 13:59:33

标签: ruby-on-rails

我在我的项目中使用过devise gem。我有一个与用户和约会模型相关的笔记模型。

class Note < ActiveRecord::Base
 validates_presence_of :description, :message => "Please enter at least 5 characters"
 belongs_to :appointment
 belongs_to :user


 before_create do
   self.user_id = appointment.patient_id if (condition)
   self.user_id = appointment.doctor_id if (condition)
 end

要写什么条件以确定我是否已将患者或医生作为记录创建?

1 个答案:

答案 0 :(得分:1)

如果您正在使用枚举来处理您的角色,那么您可以按名称查询它们,如果此类用户是患者,则user.patient?将返回true,相同的情况为医生。

所以你可以将它添加到你的before_create回调中:

before_create do
  self.user_id = appointment.patient_id if user.patient?
  ...
end

也许您可以获得用户的角色并使用它来动态获取约会ID,例如:

before_create do
  self.user_id = appointment.public_send("#{self.user.role}_id")
end

这样就可以避免重复每个角色逐个指定。