我有兴趣在我的 rails 应用程序中使用 vestal_versions gem,但我想知道是否有人知道是否有任何方法可以创建新版本,但实际上并没有更新关联的 ActiveRecord。
例如,如果我有一个名字为“jim”的用户,并且我创建了一个名字为“steve”的新版本,我希望能够在不更改父记录的情况下保留该版本,直到我以后想要时间(使用 revert_to!(newer_version) 或类似的)。
如果这没有内置到 gem 中,关于我应该从哪里开始修补的任何线索?
我有兴趣在我的 rails 应用程序中使用 vestal_versions gem,但我想知道是否有人知道是否有任何方法可以创建新版本,但实际上并没有更新关联的 ActiveRecord。
例如,如果我有一个名字为“jim”的用户,并且我创建了一个名字为“steve”的新版本,我希望能够在不更改父记录的情况下保留该版本,直到我以后想要时间(使用 revert_to!(newer_version) 或类似的)。
如果这没有内置到 gem 中,关于我应该从哪里开始修补的任何线索?
在调查了这个 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,因为它似乎更接近我想要做的事情。