Sha256: fcd76b2ad6fb8c08f9bec75c8fdda7ff4543188efa671031ecc788f15d13e578

Contents?: true

Size: 458 Bytes

Versions: 2

Compression:

Stored size: 458 Bytes

Contents

class JsonValidator < ActiveModel::EachValidator
  def initialize(options)
    options.reverse_merge!(message: :invalid_json)
    options.reverse_merge!(schema: nil)

    super
  end

  def validate_each(record, attribute, value)
    json_value = JSON.dump(value)
    errors = ::JSON::Validator.fully_validate(options.fetch(:schema), json_value)

    if errors.any?
      record.errors.add(attribute, options.fetch(:message), value: value)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activerecord_json_validator-0.1 lib/active_record/json_validator/validator.rb
activerecord_json_validator-0.0.1 lib/active_record/json_validator/validator.rb