module ParamCheck
Constants
- VERSION
Public Instance Methods
param!(name, options, &block)
click to toggle source
# File lib/param_check.rb, line 14 def param! name, options, &block validate! name, params.try(:[], name), options if block_given? recurse params[name], &block end end
Private Instance Methods
recurse(params, index = nil) { |controller, index| ... }
click to toggle source
# File lib/param_check.rb, line 24 def recurse params, index = nil controller = MockController.new controller.params = params yield controller, index end
validate!(name, value, options)
click to toggle source
# File lib/param_check.rb, line 31 def validate! name, value, options if options[:required] validate_presence name, value end if options[:type].present? validate_type name, value, options[:type] end if [ :lt, :less_than, :lte, :less_than_equal_to, :mt, :more_than, :mte, :more_than_equal_to ].map{|option| option.in?(options.keys.map(&:to_sym))}.any? validate_number name, value.to_f, options end if options[:in].present? validate_inclusion name, value, options[:in] end end
validate_inclusion(name, value, inclusion = [])
click to toggle source
# File lib/param_check.rb, line 129 def validate_inclusion name, value, inclusion = [] if ! value.in?(inclusion) raise ParameterError, I18n.t( 'param_check.invalid_inclusion', parameter: name, expected: inclusion, got: value, ) end end
validate_number(name, value, options = {})
click to toggle source
# File lib/param_check.rb, line 86 def validate_number name, value, options = {} options[:lt] = options[:less_than] if options[:less_than].present? options[:lte] = options[:less_than_equal_to] if options[:less_than_equal_to].present? options[:mt] = options[:more_than] if options[:more_than].present? options[:more_than_equal_to] = options[:more_than_equal_to] if options[:more_than_equal_to].present? if options[:lt].present? raise ParameterError, I18n.t( 'param_check.value_not_less_than', parameter: name, expected: options[:lt], got: value, ) if value >= options[:lt] end if options[:lte].present? raise ParameterError, I18n.t( 'param_check.value_not_less_than_equal_to', parameter: name, expected: options[:lte], got: value, ) if value > options[:lte] end if options[:mt].present? raise ParameterError, I18n.t( 'param_check.value_not_more_than', parameter: name, expected: options[:mt], got: value, ) if value <= options[:mt] end if options[:mte].present? raise ParameterError, I18n.t( 'param_check.value_not_more_than_equal_to', parameter: name, expected: options[:mte], got: value, ) if value < options[:mte] end end
validate_presence(name, value)
click to toggle source
# File lib/param_check.rb, line 54 def validate_presence name, value if value.nil? raise ParameterError, I18n.t( 'param_check.missing_required_parameter', parameter: name, ) end end
validate_type(name, value, type)
click to toggle source
# File lib/param_check.rb, line 63 def validate_type name, value, type return if value.nil? if type.in?([Integer, Fixnum]) is_numeric = Float(value) rescue nil if ! is_numeric raise ParameterError, I18n.t( 'param_check.invalid_parameter', parameter: name, expected: type, got: value.class.name ) end elsif ! value.is_a? type raise ParameterError, I18n.t( 'param_check.invalid_parameter', parameter: name, expected: type, got: value.class.name ) end end