Sha256: 2cccf6fb4fb4533389b8c3816db8c2199d913bb5432b570b9e4478dfbb134b79

Contents?: true

Size: 1.36 KB

Versions: 11

Compression:

Stored size: 1.36 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|
        if value = properties[field_name]
          field = job_class.fields[field_name.to_s]
          next unless field && 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
      end
      permissible_params
    end

  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rocketjob_mission_control-4.3.0 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-4.2.1 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-4.2.0 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-4.1.0 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-4.0.0 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-3.2.0 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-3.1.0 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-3.0.3 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-3.0.2 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-3.0.1 app/models/rocket_job_mission_control/job_sanitizer.rb
rocketjob_mission_control-3.0.0 app/models/rocket_job_mission_control/job_sanitizer.rb