0

我有兴趣在我的 rails 应用程序中使用 vestal_versions gem,但我想知道是否有人知道是否有任何方法可以创建新版本,但实际上并没有更新关联的 ActiveRecord。

例如,如果我有一个名字为“jim”的用户,并且我创建了一个名字为“steve”的新版本,我希望能够在不更改父记录的情况下保留该版本,直到我以后想要时间(使用 revert_to!(newer_version) 或类似的)。

如果这没有内置到 gem 中,关于我应该从哪里开始修补的任何线索?

4

1 回答 1

0

在调查了这个 gem 的行为之后,我发现这不是 vestal_versions 真正设置要做的事情。

您可以通过以下方式强制执行此行为:

def create_version
  merge_version_changes
  create_version
end

在“版本化”模型中,但是当您使用时,它会创建一个新版本,其中包含您在实时 ActiveRecord 中所做的更改而不修改父对象的表:

blah = Blah.first
blah.version

它会告诉您您正在使用最新版本,但不会加载该数据(因为它从未更改过)。如果您使用:

blah.revert_to(:last)

它不会更改您的记录,因为它认为您已经在使用最新版本。ETC..

长话短说,vestal_versions 不打算有这种行为,也不应该期望它这样做。我现在正在调查 has_drafts gem,因为它似乎更接近我想要做的事情。

于 2013-03-22T18:47:34.233 回答