繁体   English   中英

跟踪被破坏的物体

[英]Keeping track of destroyed objects

我搜索堆栈溢出类似的方法,但没有找到任何东西,所以这里提出我的问题:

我需要能够跟踪对象上是否发生了破坏以及它发生的时间。 我也不需要整个对象只是它的id。

有没有一个宝石可以做到这一点,还是需要在我的数据库中处理这个?

应该使用观察者模式

您需要创建一个观察模型的模型:

class AuditObserver < ActiveRecord::Observer
  observe :account

  def after_destroy(account)
    p "#{account.id} destroyed"
  end
end

AuditObserver在此处观察Account模型,并在帐户被销毁时打印出消息。

请记住,您需要将观察者添加到配置( config/appplication.rb )中:

config.active_record.observers = :audit_observer

更新

如果你想在一段时间内拥有被破坏的对象,你可以使用rails3_acts_as_paranoid gem。

然后,您可以将删除的帐户提取为:

Account.deleted_after_time(time)

或者,您可以创建一个新模型( Audit ),然后可以将带有时间戳的已销毁ID插入该表。

如果您不介意保留记录,可以使用偏执狂gem ,它会添加一个deleted_at时间戳并使用它来deleted_at模型范围,因此默认情况下会排除已删除的记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM