Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在ActiveRecord关联中表示多个空/通用对象?_Ruby On Rails_Activerecord_Belongs To - Fatal编程技术网

Ruby on rails 在ActiveRecord关联中表示多个空/通用对象?

Ruby on rails 在ActiveRecord关联中表示多个空/通用对象?,ruby-on-rails,activerecord,belongs-to,Ruby On Rails,Activerecord,Belongs To,我有一个属于医生的病例档案模型。除了所有“真正的”医生外,还有一些普通医生:“自我治疗”、“未指定”和“移除”(过去有真正的医生,但现在不再有)。我怀疑将来会有更多的通用值 我从数据库中的特殊“医生”开始,由seed生成。普通医生只需对名称、头衔、公司、出版?方法作出回应 其中一个有效,两个也很紧张,现在感觉完全崩溃了。我想改变这种行为,但不知道如何测试它,这是一个坏迹象。创建所有用于测试的通用对象也很麻烦,包括假值以通过所需医生属性的验证 空对象模式适用于一个通用对象。“name”方法可以返回

我有一个属于医生的病例档案模型。除了所有“真正的”医生外,还有一些普通医生:“自我治疗”、“未指定”和“移除”(过去有真正的医生,但现在不再有)。我怀疑将来会有更多的通用值

我从数据库中的特殊“医生”开始,由seed生成。普通医生只需对
名称、头衔、公司、出版?
方法作出回应

其中一个有效,两个也很紧张,现在感觉完全崩溃了。我想改变这种行为,但不知道如何测试它,这是一个坏迹象。创建所有用于测试的通用对象也很麻烦,包括假值以通过所需医生属性的验证

空对象模式适用于一个通用对象。“name”方法可以返回“self-treated”,如所示


当有多个状态非常有限的泛型对象时,我应该使用什么模式?

在我看来,您可以只向案例文件模型添加一个额外的字段,称为,比如,
治疗(将设置为“自我治疗”、“未指定”等)

您可以添加验证以确保案例文件指定了医生或治疗:

validate :has_doctor_or_treatment, :on => :save

def has_doctor_or_treatment
  (self.doctor.exists? || !treatment.blank?)
end
然后,您可以使用治疗字段,使用
查找病例文件。其中

Casefile.where(:treatment => "self-treated")
如果你愿意,你可以作为一个额外的模型进行治疗,其中Casefile
有一个医生,而
有一个治疗-但你的需求似乎太简单了,无法保证这一点