我有Patient
has_many
到Phenotype
s的模型PatientsPhenotype
。
class Patient < ActiveRecord::Base
has_many :patients_phenotypes
has_many :phenotypes, through: :patients_phenotypes
end
class PatientsPhenotype < ActiveRecord::Base
belongs_to :patient
belongs_to :phenotype
belongs_to :user
has_many :properties # Information associated with each row in this join table
end
class Phenotype < ActiveRecord::Base
has_many :patients_phenotypes
has_many :patients, through: :patients_phenotypes
end
由于某些患者记录已过期,我希望将属于旧患者记录的表型重新关联到新的患者记录中。我不能简单地使用patient.phenotypes << phenotype
将表型直接添加到患者体内,因为这些关联带有与连接表记录本身相关的其他信息,例如user_id
和properties
。 / p>
我尝试做的是将连接表实例的FK从旧患者设置为新患者,然后将此连接表实例添加到新患者的连接表集合中。
patient_phenotype.patient_id
# => (old_patient_id)
patient_phenotype.patient_id = new_patient.id
patient_phenotype.save
new_patient.patients_phenotypes << patient_phenotype
然而,这不起作用:
new_patient.phenotypes
# => []
这里出了什么问题?我最好只创建一个全新的PatientsPhenotype
并重新分配属于原始PatientsPhenotype
的信息吗?
答案 0 :(得分:1)
在您运行new_patient.phenotypes
执行new_patient.reload
之前。