每当我创建,更新或销毁模型时,我都需要向前端应用发送通知。发送消息时,我需要知道记录是否是新创建的记录,或者记录是否已被删除。为避免重复,我宁愿在单个ActiveRecord生命周期钩子中处理所有这些(即before_save,after_save,after_commit等)。
我的问题似乎是在before_save
回调中,destroyed?
在我销毁对象时会返回false,但如果我使用after_commit
那么new_record?
将返回即使我刚创建了这个对象也是假的。
有没有办法可靠地识别:
和
在对象生命周期中的单个点?
答案 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