docbrown/app/controllers/admin/settings/mandatory_settings_controller.rb
Michael Kohl dcf942e3a2
Add Admin:Settings controllers (#13851)
* Add Admin:Settings::BaseController and refactor

* Further simplify controllers

* Add comments, more cleanup

* Update mandatory settings controller

* Update spec

* Update service object and spec

* Update controller

* Update app/services/settings/general/upsert.rb

Co-authored-by: Jamie Gaskins <jamie@forem.com>

Co-authored-by: Jamie Gaskins <jamie@forem.com>
2021-06-08 10:13:55 +07:00

39 lines
1 KiB
Ruby

module Admin
module Settings
class MandatorySettingsController < Admin::Settings::BaseController
Result = Struct.new(:errors) do
def success?
errors.none?
end
end
private
def upsert_config(configs)
errors = []
configs.each do |key, value|
settings_model = ::Settings::Mandatory::MAPPINGS[key.to_sym]
if value.is_a?(Array)
settings_model.public_send("#{key}=", value.reject(&:blank?)) if value.present?
else
settings_model.public_send("#{key}=", value.strip) unless value.nil?
end
rescue ActiveRecord::RecordInvalid => e
errors << e.message
next
end
Result.new(errors)
end
# NOTE: we need to override this since the controller name doesn't reflect
# the model name
def authorization_resource
::Settings::Mandatory
end
def settings_params
params.permit(::Settings::Mandatory.keys)
end
end
end
end