Rails模型关系保存

时间:2014-04-12 15:13:12

标签: ruby-on-rails save relationship

我有两个有很多关系的课程,实验和样本:

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;对于实验类中的链接是真的并且没有解决任何问题。难道不应该强迫这个问题吗? [我现在意识到我不记得我是否将它放在连接表链接或:通过链接 - 也许我只是把它放错了?]

我确信文档中的所有内容都可以使用,但在这一点上,我真的只想对我的情况做一个清晰,简单的解释,而不是从某种相关的东西推断它,或者花费数小时搜索确切地说,我需要的信息。

0 个答案:

没有答案