Module: InstanceValidator
- Defined in:
- lib/instance_validator.rb
Class Method Summary collapse
-
.validates(record, *attributes) ⇒ Object
Allows us to use easily use default validators in instance methods with the same syntax & behavior as class-level validations.
Class Method Details
.validates(record, *attributes) ⇒ Object
Allows us to use easily use default validators in instance methods with the same syntax & behavior as class-level validations
Based on ActiveModel::Validations::ClassMethods#validates
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/instance_validator.rb', line 9 def validates(record, *attributes) initial_error_count = record.errors.count validations = attributes. raise ArgumentError, 'You need to supply at least one attribute' if attributes.empty? raise ArgumentError, 'You need to supply at least one validation' if validations.empty? validations.each do |key, | next unless key = "#{key.to_s.camelize}Validator" begin validator = ActiveModel::Validations.const_get(key) rescue NameError raise ArgumentError, "Unknown validator: '#{key}'" end = {} if .is_a? TrueClass validator.new(.merge(attributes: attributes)).validate(record) end record.errors.count == initial_error_count end |