我在我的项目中使用过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
端
要写什么条件以确定我是否已将患者或医生作为记录创建?
答案 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
这样就可以避免重复每个角色逐个指定。