class JsonValidator

Constants

DEFAULT_SCHEMAS_PATH

Public Class Methods

new(options) click to toggle source
Calls superclass method
# File lib/active_model/json_validator/validator.rb, line 4
def initialize(options)
  @model = options[:class]
  super
end

Public Instance Methods

validate_each(model, attribute, value) click to toggle source
# File lib/active_model/json_validator/validator.rb, line 9
def validate_each(model, attribute, value)
  schema = options.fetch(:schema, default_schema(attribute))
  errors = JSON::Validator.fully_validate(schema, value)
  model.errors.add(attribute, message(errors)) if errors.any?
end

Private Instance Methods

default_model_path() click to toggle source
# File lib/active_model/json_validator/validator.rb, line 34
def default_model_path
  @model.model_name.singular
end
default_root_path() click to toggle source
# File lib/active_model/json_validator/validator.rb, line 23
def default_root_path
  require 'rails'
  Rails.root.join.to_s
rescue LoadError
  File.join.to_s
end
default_schema(attribute) click to toggle source
# File lib/active_model/json_validator/validator.rb, line 38
def default_schema(attribute)
  File.join(
    default_root_path,
    default_schemas_path,
    default_model_path,
    "#{attribute}.json"
  ).to_s
end
default_schemas_path() click to toggle source
# File lib/active_model/json_validator/validator.rb, line 30
def default_schemas_path
  DEFAULT_SCHEMAS_PATH
end
message(errors) click to toggle source
# File lib/active_model/json_validator/validator.rb, line 17
def message(errors)
  message = options.fetch(:message, :invalid_json)
  return message unless message.respond_to?(:call)
  message.call(errors)
end