【问题标题】:Rails vestal_versions gem create versions without saving parentRails vestal_versions gem 创建版本而不保存父版本
【发布时间】:2013-03-20 20:54:05
【问题描述】:

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

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

如果这不是 gem 中内置的,我应该从哪里开始修补有什么线索吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    def create_version
      merge_version_changes
      create_version
    end
    

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

    blah = Blah.first
    blah.version
    

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

    blah.revert_to(:last)
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多