Rails Papertrail版本订单模型按变更集差异

时间:2016-11-17 04:09:40

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

通过变更集订购模型版本的最简洁方法是什么?

我跟踪一个整数(例如,考虑每周减重的数量),我想向那些最终失去本周最多的用户展示#34;

我设法破解了你曾经见过的最丑陋的片段,我将其包含在下面。

我无法相信那里没有一些聪明的方法。有什么想法吗?

@scoreboard ||= PaperTrail::Version.where(item_type: "WorkoutLog").map do |version|
  if version.changeset['weight']
    first = version.changeset['weight'][0] 
    last  = version.changeset['weight'][1]

    next if first.nil? || last.nil?

    diff = last - first
    {diff: diff, id: version.item_id}
  end
end

1 个答案:

答案 0 :(得分:0)

停止使用PaperTrail作为'diff'的主要跟踪系统 - 使其成为系统中的第一类数据库对象。然后,对于大多数丢失的对象,查询对象变得更加简单:

operator*

或者,如果您只想查找相关对象的最新更改,请执行以下操作:

DeltaWeight.where(created_at: 7.days.ago..Time.now).order(:amount_changed)