通过变更集订购模型版本的最简洁方法是什么?
我跟踪一个整数(例如,考虑每周减重的数量),我想向那些最终失去本周最多的用户展示#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
答案 0 :(得分:0)
停止使用PaperTrail作为'diff'的主要跟踪系统 - 使其成为系统中的第一类数据库对象。然后,对于大多数丢失的对象,查询对象变得更加简单:
operator*
或者,如果您只想查找相关对象的最新更改,请执行以下操作:
DeltaWeight.where(created_at: 7.days.ago..Time.now).order(:amount_changed)