Ruby on rails 如何判断ActiveRecord对象是否会在实际销毁之前销毁?

Ruby on rails 如何判断ActiveRecord对象是否会在实际销毁之前销毁?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,无论何时创建、更新或销毁模型,我都需要向前端应用程序发送通知。发送消息时,我需要知道该记录是新创建的记录还是已删除的记录。为了避免重复,我更愿意在单个ActiveRecord生命周期挂钩中处理所有这一切(即保存前、保存后、提交后等) 我的问题似乎是在保存之前的回调中,销毁?在销毁对象时将返回false,但如果在提交之后使用,则新建记录?将返回false,即使我刚刚创建了对象 是否有一种方法可以可靠地识别: 如果记录已经或将被销毁 及 如果记录是或曾经是新记录 在对象生命周期中的单个点上?在提交后

无论何时创建、更新或销毁模型,我都需要向前端应用程序发送通知。发送消息时,我需要知道该记录是新创建的记录还是已删除的记录。为了避免重复,我更愿意在单个ActiveRecord生命周期挂钩中处理所有这一切(即保存前、保存后、提交后等)

我的问题似乎是在
保存之前的
回调中,
销毁?
在销毁对象时将返回false,但如果在提交之后使用
,则
新建记录?
将返回false,即使我刚刚创建了对象

是否有一种方法可以可靠地识别:

  • 如果记录已经或将被销毁
  • 如果记录是或曾经是新记录

  • 在对象生命周期中的单个点上?

    在提交后使用

    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
    

    before\u save
    在您使用save创建或更新记录(新记录或现有记录)之前触发,那么为什么您希望
    销毁?
    在回调中为true?与提交后的
    相同
    ,一旦创建、更新或销毁记录,就不能成为
    新的\u记录?
    。我理解其中的原因(也不希望这些回调会有任何不同),我只是想知道是否有办法实现我正在尝试的目标(可能使用的方法不是
    销毁?
    新建记录?
    )。提交后的
    不是很像:新建记录,打开::创建
    (创建的记录)就足够了吗?您可以在方法
    新建记录
    中构建或发送消息(无需检查它是否是新创建的)您可以为
    :create
    :update
    中的每一个添加一个。更多信息:@limekin将起作用!我不知道您可以为回调指定操作。