class FormsController < ApplicationController before_action :set_form, only: [:show, :edit, :update, :destroy] def index @forms = Form.all end def show end def new @form = Form.new end def create @form = Form.new(form_params) if @form.save redirect_to forms_path, notice: 'Form was successfully created.' else render :new end end def edit end def update if @form.update(form_params) redirect_to @form, notice: 'Form was successfully updated.' else render :edit end end def destroy @form = Form.find(params[:id]) # Manually delete or handle associated records here @form.onboarding_items.destroy_all @form.forms_roles.destroy_all @form.destroy redirect_to forms_url, notice: 'Form was successfully destroyed.' rescue ActiveRecord::InvalidForeignKey redirect_to forms_url, alert: 'Form could not be deleted. There are dependent records still associated.' end private def set_form @form = Form.find(params[:id]) end def form_params params.require(:form).permit(:name, :required, :program, role_ids: []) end def check_admin redirect_to(root_path, alert: "Not authorized") unless current_user.admin? end end