Ruby on rails 保存多个模型状态的快照

Ruby on rails 保存多个模型状态的快照,ruby-on-rails,database-design,Ruby On Rails,Database Design,我对编程相当陌生,我正在Rails中为一个分析实验室开发一个簿记应用程序。在记录维护事件时,从关联模型中保存特定数据的快照将非常有用。换句话说,我们有仪器、仪器的测试方法和仪器上执行的维护事件,但方法是可变的,因此在执行维护时,最好有方法状态的静态记录 简单地创建一个单独的快照/状态模型,只存储关联模型中的数据,这样的数据库设计好吗?这对我来说是有道理的,但我对编程还不够了解,所以要小心养成坏习惯。谢谢 我想您有仪器、方法学和维护事件。我只需将已使用的方法分配给每个维护事件: class Ins

我对编程相当陌生,我正在Rails中为一个分析实验室开发一个簿记应用程序。在记录维护事件时,从关联模型中保存特定数据的快照将非常有用。换句话说,我们有仪器、仪器的测试方法和仪器上执行的维护事件,但方法是可变的,因此在执行维护时,最好有方法状态的静态记录


简单地创建一个单独的快照/状态模型,只存储关联模型中的数据,这样的数据库设计好吗?这对我来说是有道理的,但我对编程还不够了解,所以要小心养成坏习惯。谢谢

我想您有
仪器
方法学
维护事件
。我只需将已使用的方法分配给每个维护事件:

class Instrument < ActiveRecord::Base
  has_many :maintenance_events
end

class MaintenanceEvent < ActiveRecord::Base
  belongs_to :instrument
  has_one :methodology
end

class Methodology < ActiveRecord::Base
  belongs_to :maintenance_event
end

我明白你的意思,但我想我可能把我的问题说错了一点。更详细一点:仪器有很多方法,方法有很多分析物。由于我们可能会细化或更改方法中列出的分析物,因此当从维护事件引用的方法中编辑或删除分析物时,我们的数据完整性将崩溃。因此,我似乎可以a)不允许对方法进行真正的编辑,而只在每次编辑时保存一个新的方法,或者b)将方法的相关快照/状态保存为维护事件期间的状态。我在这里看到两种可能性。如果出于其他原因需要,您可以通过使用
has\u many:through
关联来跟踪这些变化,该关联将中间代理置于方法学和分析物之间,并具有一个例如
有效的
列。这样就没有矛盾了。另一种解决方案是将方法和分析物都附加到维护事件中,而不明确说明它们是链接的,您只需将它们保存在两列中,然后在需要时检索它们。
Instrument.find_by_name("Microscope XY").maintenance_events.last.methodology