Sha256: 727c36d11185e068f3af05928e9b6dbaba1f15484fb8ec0ded39709652aa4d5d
Contents?: true
Size: 1.32 KB
Versions: 3
Compression:
Stored size: 1.32 KB
Contents
module RocketJobMissionControl module JobSanitizer # Returns [Hash] the permissible params for the specified job class, after sanitizing. # Parameters # properties [Hash] # Parameters to extract the values from. # # job_class [RocketJob::Job] # Job class from which the user editable fields and types will be retrieved. # # target [ActiveModel::Base] # Model to set the errors on. # # nil_blank [Boolean] # true: Nil out blank fields. # false: Do not return blank fields. # Default: true def self.sanitize(properties, job_class, target, nil_blank = true) permissible_params = {} job_class.user_editable_fields.each do |field_name| next unless value = properties[field_name] field = job_class.fields[field_name.to_s] next unless field&.type case field.type.name when "Hash" begin value = value.blank? ? nil : JSON.parse(value) rescue JSON::ParserError => e target.errors.add(:properties, e.message) end end if value.blank? && !value.is_a?(Hash) permissible_params[field_name] = nil if nil_blank else permissible_params[field_name] = value end end permissible_params end end end
Version data entries
3 entries across 3 versions & 1 rubygems