如何通过多个联想形成一个多个的关系?

rkttyhzu  于 2022-09-21  发布在  Ruby
关注(0)|答案(2)|浏览(195)

**上下文:**我有两个型号ClinicalSystemTemplateMessage

**我的目标:**是ClinicalSystem与多个TemplateMessage,但也与不同名称的TemplateMessage有多个has_one关系。例如:

clinical_system.tempalte_messages, clinical_system.reschedule_template_message, clinical_system.cancellation_template_message.

我如何构建我的协会来实现这一点?我试过has_many: through,但失败了。

kh212irz

kh212irz1#

您可以分别定义主has_many关联和has_one关联,如下所示:

class ClinicalSystem
  has_many :tempalte_messages
  has_one :reschedule_template_message, -> { CONDITION_FOR_RESCHEDULE }, class_name: TemplateMessage.name
  has_one :cancellation_template_message, -> { CONDITION_FOR_CANCELLATION }, class_name: TemplateMessage.name
end
b09cbbtk

b09cbbtk2#

您可以使用foreign_keyclass_name实现这一点

class ClinicalSystem
  has_many :tempalte_messages
  belongs_to :reschedule_template_message, foreign_key: 'reschedule_template_message_id', class_name: 'TemplateMessage'
  belongs_to :cancellation_template_message, foreign_key: 'cancellation_template_message_id', class_name: 'TemplateMessage'
end

您还需要添加迁移,以便在临床表中添加foreign_key reschedule_template_message_idcancellation_template_message_id

相关问题