module ChronosAuthz::Validations::OptionsValidator
Public Class Methods
included(base)
click to toggle source
# File lib/chronos_authz/validations/options_validator.rb, line 5 def self.included base base.extend OptionsValidatorClassMethods end
Public Instance Methods
validate!()
click to toggle source
# File lib/chronos_authz/validations/options_validator.rb, line 23 def validate! # Required options if !self.class.required_options.nil? self.class.required_options.each do |required_option| option_value = send(required_option) if respond_to?(required_option) raise ChronosAuthz::Validations::ValidationError.new("Missing option #{required_option} in #{self.class}") if option_value.blank? end end # Check constraint if !self.class.predefined_value_map.nil? self.class.predefined_value_map.each do |key, value| option_values = send(key) check_values = value[:check_values] if !option_values.is_a? Array option_values = [option_values] end if value[:constraint_options][:case_sensitive].nil? || !value[:constraint_options][:case_sensitive] option_values = option_values.map{|option_value| option_value.to_s.upcase } check_values = check_values.map{|check_value| check_value.to_s.upcase } end option_values.each do |option_value| next if value[:constraint_options][:allow_nil] && (option_value.nil? || option_value.empty?) raise ChronosAuthz::Validations::ValidationError.new("Invalid option value #{option_value} for #{key} in #{self.class}. Valid values are #{check_values}.") if !check_values.include?(option_value) end end end self end