【问题标题】:PaperTrail not updating the meta fields when update modelPaperTrail 更新模型时不更新元字段
【发布时间】:2019-08-10 09:24:15
【问题描述】:

我在我的 rails 应用程序中使用 paper_trail。我正在定义一个:meta 来存储每个模型的一些数据。在该元内部有一个属性:date,它采用模型上的日期值。现在,当我为模型创建新记录时,它会将数据正确存储在 versions 表中,但是如果我在保存时修改该记录,它还会在版本中为事件更新创建新记录,但日期属性即使在模型上修改了该属性,也不会在版本表中修改。

如何修改 paper_trail 的配置,以便在模型修改属性时修改属性?

has_paper_trail class_name: 'HistoryElement',
  on: [:create, :update, :destroy],
  meta: {
    patient_id: :patient_id, 
    instance_id: :instance_id, 
    status: :status, 
    date: :inicio, 
    item_type_id: HistoryElement::EVENT_TYPES[:dialysis_session]
  }

【问题讨论】:

  • 看目前提供的代码,没看出有什么问题。如果您可以使用this script 重现此问题,那么您可能发现了一个错误。我们暂时不接受问题,但如果您可以使用脚本重现此问题,请打开 PR。
  • @JaredBeck:我今天遇到了同样的问题。我注意到元值比记录的当前状态落后 1 步。
  • @GiangNguyen 我不得不提取 gem 代码并根据我的需要对其进行修改,并将应用程序指向该 gem 代码而不是公共代码。 gem 没有用新数据更新数据,正如你所说,它落后了 1 步

标签: ruby-on-rails ruby paper-trail-gem


【解决方案1】:

PaperTrail 版本保留以前的状态,而不是记录的新状态,因此这是预期行为。您可以使用 proc 从记录中检索新数据(或任何 PaperTrail 会省略的数据)

meta: {
  date: proc { |record| record.date }
}

【讨论】:

  • 对于后代,我遇到了类似的问题,API 和会话控制器不存储用户。这解决了它!
猜你喜欢
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
  • 2013-05-26
  • 2020-08-11
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多