Rails vestal_versions gem创建版本而不保存父级

时间:2013-03-20 20:54:06

标签: ruby-on-rails ruby vestal-versions

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

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

如果这没有内置到gem中,那么我应该开始修补哪些线索?

1 个答案:

答案 0 :(得分:0)

在调查了这个宝石的行为之后,我发现这不是一个真正建立起来的东西。

您可以使用以下内容强制执行此操作:

def create_version
  merge_version_changes
  create_version
end

在'版本化'模型中,但是当您使用以下内容创建一个新版本,其中包含您已放入实时ActiveRecord的更改而不修改父对象的表:

blah = Blah.first
blah.version

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

blah.revert_to(:last)

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

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