From f9f67c09e8d6f2bb26e47dc5b110d49525062fbd Mon Sep 17 00:00:00 2001 From: Faizaan Gagan Date: Mon, 24 May 2021 07:03:30 +0530 Subject: [PATCH] dynamically generate permitted params for admin wizard save --- controllers/custom_wizard/admin/wizard.rb | 24 +++------------- lib/custom_wizard/field.rb | 34 ++++++++++++----------- 2 files changed, 22 insertions(+), 36 deletions(-) diff --git a/controllers/custom_wizard/admin/wizard.rb b/controllers/custom_wizard/admin/wizard.rb index 32810afa..b01fe368 100644 --- a/controllers/custom_wizard/admin/wizard.rb +++ b/controllers/custom_wizard/admin/wizard.rb @@ -102,26 +102,10 @@ class CustomWizard::AdminWizardController < CustomWizard::AdminController permitted_params: mapped_params, condition: mapped_params, fields: [ - :id, - :index, - :label, - :image, - :description, - :required, - :key, - :type, - :min_length, - :max_length, - :char_counter, - :file_types, - :format, - :limit, - :property, - prefill: mapped_params, - content: mapped_params, - condition: mapped_params, - index: mapped_params, - validations: {}, + *CustomWizard::Field.type_attributes(:permitted), + CustomWizard::Field.type_attributes(:mapped).map do |attribute| + [attribute, mapped_params] + end.to_h ] ], actions: [ diff --git a/lib/custom_wizard/field.rb b/lib/custom_wizard/field.rb index 2d987d9c..52d9a16b 100644 --- a/lib/custom_wizard/field.rb +++ b/lib/custom_wizard/field.rb @@ -6,27 +6,29 @@ class CustomWizard::Field def self.attribute_map { raw: [], - id: [:serializable], - index: [:accessible, :serializable], - type: [:serializable], + id: [:serializable, :permitted], + index: [:accessible, :serializable, :permitted, :mapped], + type: [:serializable, :permitted], step: [:accessible], - required: [:serializable], + required: [:serializable, :permitted], value: [:serializable], - description: [:serializable], - image: [:serializable], - key: [], + description: [:serializable, :permitted], + image: [:serializable, :permitted], + key: [:permitted], validations: [:serializable], - min_length: [], - max_length: [:serializable], - char_counter: [:serializable], - file_types: [:serializable], - format: [:serializable], - limit: [:serializable], - property: [:serializable], - content: [:serializable], + min_length: [:permitted], + max_length: [:serializable, :permitted], + char_counter: [:serializable, :permitted], + file_types: [:serializable, :permitted], + format: [:serializable, :permitted], + limit: [:serializable, :permitted], + property: [:serializable, :permitted], # label is excluded so that it isn't initialized and the value # returned by `label` method is used for serialization - label: [:excluded, :serializable] + label: [:excluded, :serializable, :permitted], + content: [:serializable, :permitted, :mapped], + prefill: [:permitted, :mapped], + condition: [:permitted, :mapped], } end