我有两个有很多关系的课程,实验和样本:
class Experiment
has_many :ExperimentSamples
has_many :Samples, through: => :ExperiemntSamples
# To avoid duplicate pointers to same sample in samples array
def add_sample(sample)
samples.each do |exp_sample|
if sample.id && (sample.id == exp_sample.id)
samples.delete(exp_sample)
break
end
end
samples << sample
end
end
class ExperimentSample
belongs_to :Experiment
belongs_to :Sample
end
class Sample
has_many :ExperimentSamples
has_many :Experiments, through: => :ExperimentSamples
end
我有一种创建和/或更新实验及其相关对象的方法。当我创建或保存实验时,它也会创建/保存实验中包含的所有样本。直到今天,也就是说,当质量保证人员提交了更新实验的更改,其中一个样本,以及另一个新的链接对象。当系统保存实验对象时,保存实验字段更改,并创建样本上的新链接对象,但样本对象的更改已丢失。当我再次执行它,但循环并明确保存每个实验的样本时,一切正常。
所以,我对Rails如何保存链接数据有一个基本的误解。我猜测链接到另一个保存对象时会保存新的模型对象,但是需要明确处理更新,但有人可以为我确认吗?
另外,我尝试添加:autosave =&gt;对于实验类中的链接是真的并且没有解决任何问题。难道不应该强迫这个问题吗? [我现在意识到我不记得我是否将它放在连接表链接或:通过链接 - 也许我只是把它放错了?]
我确信文档中的所有内容都可以使用,但在这一点上,我真的只想对我的情况做一个清晰,简单的解释,而不是从某种相关的东西推断它,或者花费数小时搜索确切地说,我需要的信息。