0

我目前正在从事一个个人项目,但在试图找出挂钩到请求周期中特定点的最佳方法时遇到了困难。

所以我想要完成的是:从“新”动作(在子对象的控制器内部),如果用户降落在其他任何地方,但“创建”动作作为下一个动作,我想删除关联的父对象。到目前为止,我在想我想编写一个私有方法,如果下一个操作是“创建”以外的任何其他地方,则在父对象上调用销毁作为条件,但我似乎无法找到完全适合我的特定情况的正确回调. 任何人都可以提出一个好的解决方案吗?

这是我对各个控制器的代码。

父控制器:

class EncountersController < ApplicationController
    before_action :verify_if_logged_in, :authorize_provider, :set_patient_by_id, :view_all_patient_encounters
    
    def index
        @encounter = Encounter.new
    end

    def create
        @encounter = Encounter.new(encounter_params)
        @encounter.provider = current_user
        @encounter.patient = @patient
        if @encounter.save
            redirect_to new_patient_encounter_soap_path(@patient, encounter)
        else
            render :index
        end
    end

    private

    def set_patient_by_id
        @patient = Patient.find_by(id: params[:patient_id])
    end

    def view_all_patient_encounters
        @encounters = @patient.encounters
    end

    def encounter_params
        params.require(:encounter).permit(:encounter_type)
    end
end

子控制器:

class SoapsController < ApplicationController
    before_action :set_patient_by_id, :set_encounter_by_id

    def new
        @soap = SOAP.new
    end

    def create
        #If I don't end up here immediately after the new action for whatever reason
        #I want to destroy the newly created parent object
    end

    private

    def set_patient_by_id
        @patient = Patient.find_by(id: params[:patient_id])
    end

    def set_encounter_by_id
        @encounter = Encounter.find_by(id: params[:encounter_id])
    end
end

一旦我从我的 EncountersController 的创建操作进入我的 SoapsController 的新操作,如果我没有在 Soaps#create 作为我的下一个操作结束,我想销毁关联的 Encounter 对象。

4

0 回答 0