aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/compliance_controls_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/compliance_controls_controller.rb')
-rw-r--r--app/controllers/compliance_controls_controller.rb32
1 files changed, 24 insertions, 8 deletions
diff --git a/app/controllers/compliance_controls_controller.rb b/app/controllers/compliance_controls_controller.rb
index d7d84afb3..6fe799267 100644
--- a/app/controllers/compliance_controls_controller.rb
+++ b/app/controllers/compliance_controls_controller.rb
@@ -7,26 +7,42 @@ class ComplianceControlsController < BreadcrumbController
end
def new
- if params[:sti_class]
- @compliance_control_set = parent
- @compliance_control = params[:sti_class].constantize.new
- else
+ if params[:sti_class].blank?
+ flash[:notice] = I18n.t("compliance_controls.errors.mandatory_control_type")
redirect_to(action: :select_type)
end
+ new!
end
def create
- create! { compliance_control_set_path(parent) }
+ create! do |success, failure|
+ success.html { redirect_to compliance_control_set_path(parent) }
+ failure.html { render( :action => 'new' ) }
+ end
+ end
+
+ protected
+
+ alias_method :compliance_control_set, :parent
+ alias_method :compliance_control, :resource
+
+ def build_resource
+ @compliance_control ||= compliance_control_class.new compliance_control_set: parent
end
private
+
+ def compliance_control_class
+ (params[:sti_class] || params[:compliance_control][:type]).constantize
+ end
+
def dynamic_attributes_params
- params.require(:compliance_control).permit(:type).values[0].constantize.dynamic_attributes
+ compliance_control_class.dynamic_attributes
end
def compliance_control_params
base = [:name, :code, :origin_code, :criticity, :comment, :control_attributes, :type, :compliance_control_block_id]
- permited = base + dynamic_attributes_params
- params.require(:compliance_control).permit(permited)
+ permitted = base + dynamic_attributes_params
+ params.require(:compliance_control).permit(permitted)
end
end