Rails 3 after_save用于跟踪更新历史记录

时间:2012-05-16 04:03:13

标签: ruby-on-rails

这篇文章的原因是得到关于是否有“Rails方式”做我正在尝试的事情的反馈。我这样做的方式似乎有点笨拙,容易出现人为错误。

我有多个表,我想存储包含更新记录的时间和日期的历史记录。谁更新它并不重要。

目前,我已将以下内容放在一起[尚未经过测试,某些语法可能不对],但似乎其他人会有这种需求并且有更好的方法可以做到这一点,无论是否存在一种在数据库级别实现此方法的方法,或者我不知道的其他一些内置方法/回调。

生成模型CreateDdiPlanHistorical包括updated_at:datetime在create_history方法下面的其他字段之上,我的理解是应该自动填充要添加或修改的历史表中的任何记录。

(为清晰起见,验证和协会被剥离)

class CallDdiPlan < ActiveRecord::Base
  attr_accessible :active, :ddi_count, :plan_name, :price

  after_save :create_history

  private

    def create_history
      CallDdiPlanHistorical.create({:active => this.active, :ddi_count => this.ddi_count, :plan_name => this.plan_name, :price => this.price, :call_ddi_plan_id => this.id})
    end

end

1 个答案:

答案 0 :(得分:0)

你可以做一些自己动手的解决方案,但如果你真的想让老板高兴,那就使用经过审计的宝石:

https://github.com/collectiveidea/audited