如何判断ActiveRecord对象在实际出现之前是否会被销毁?

时间:2015-06-05 00:19:07

标签: ruby-on-rails ruby activerecord

每当我创建,更新或销毁模型时,我都需要向前端应用发送通知。发送消息时,我需要知道记录是否是新创建的记录,或者记录是否已被删除。为避免重复,我宁愿在单个ActiveRecord生命周期钩子中处理所有这些(即before_save,after_save,after_commit等)。

我的问题似乎是在before_save回调中,destroyed?在我销毁对象时会返回false,但如果我使用after_commit那么new_record?将返回即使我刚创建了这个对象也是假的。

有没有办法可靠地识别:

  1. 如果记录已被破坏或将被销毁
    1. 如果记录是或是新记录
    2. 在对象生命周期中的单个点?

1 个答案:

答案 0 :(得分:1)

使用after_commit

after_commit :new_record, on: :create
after_commit :update_record, on: :update
after_commit :destroy_record, on: destroy

private
  def new_record
    # Send or build message here.
  end
  def update_record
    # Send or build message here.
  end
  def destroy_record
    # Send or build message here.
  end