ruby-on-rails - 跟踪被破坏的对象

标签 ruby-on-rails events destroy

我在 stack-overflow 中搜索了类似的方法,但没有找到任何东西,所以我的问题是:

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

是否有 gem 可以执行此操作或是否需要在我的数据库中处理此操作?

最佳答案

observer pattern应该用于此目的。

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

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 插入到该表中。

关于ruby-on-rails - 跟踪被破坏的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844107/

相关文章:

javascript - onBlur 事件不允许链接点击注册

javascript - 焦点去哪儿了?

c# - 如何销毁实例化的游戏对象克隆?

jquery - escape_javascript 后的砌体

ruby-on-rails - rails : dependent delete of models where association has non-standard name

ruby-on-rails - Rails:Gemfile.lock 需要 "Could not find bundler"(2.2.11)。 ( gem ::GemNotFoundException)

ruby-on-rails - 在 Ruby 中检测上传文件的 MIME 类型

c# - 在 C# 中区分 Click 和 DoubleClick 事件

Angular - 我需要避免破坏组件

jsf - @ViewScoped bean 在 JSF 中如何以及何时被销毁?