akkounts/app/controllers/admin/settings_controller.rb
Râu Cao 4909dac5c2
All checks were successful
continuous-integration/drone/push Build is passing
Fix typo
The return value of `strip!` is `nil`
2024-09-11 16:26:48 +02:00

50 lines
1.0 KiB
Ruby

class Admin::SettingsController < Admin::BaseController
before_action :set_current_section
def index
end
def update_settings
@errors = ActiveModel::Errors.new(Setting.new)
changed_keys = []
setting_params.keys.each do |key|
next if clean_param(key).nil? ||
(Setting.send(key).to_s == clean_param(key))
changed_keys.push(key)
setting = Setting.new(var: key)
setting.value = clean_param(key)
unless setting.valid?
@errors.merge!(setting.errors)
end
end
if @errors.any?
render :show and return
end
changed_keys.each do |key|
Setting.send("#{key}=", clean_param(key))
end
end
private
def set_current_section
@current_section = :settings
end
def setting_params
params.require(:setting).permit(Setting.editable_keys.map(&:to_sym))
end
def clean_param(key)
if Setting.get_field(key)[:type] == :string
setting_params[key].strip
else
setting_params[key]
end
end
end