Class: Axn::Validation::Fields
- Inherits:
-
Object
- Object
- Axn::Validation::Fields
show all
- Includes:
- ActiveModel::Validations
- Defined in:
- lib/axn/core/validation/fields.rb
Constant Summary
collapse
- ModelValidator =
NOTE: defining classes where needed b/c we explicitly register it’ll affect ALL the consuming apps’ validators as well
Validators::ModelValidator
- TypeValidator =
Validators::TypeValidator
- ValidateValidator =
Validators::ValidateValidator
- OfValidator =
Validators::OfValidator
- ShapeValidator =
Validators::ShapeValidator
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(context) ⇒ Fields
Returns a new instance of Fields.
15
16
17
|
# File 'lib/axn/core/validation/fields.rb', line 15
def initialize(context)
@context = context
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name) ⇒ Object
25
26
27
28
29
30
31
32
|
# File 'lib/axn/core/validation/fields.rb', line 25
def method_missing(method_name, ...)
action = _action_for_validation
return super unless action && action.respond_to?(method_name, true)
action.send(method_name, ...)
end
|
Class Method Details
.validate!(validations:, context:, exception_klass:) ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/axn/core/validation/fields.rb', line 41
def self.validate!(validations:, context:, exception_klass:)
validator = Class.new(self) do
def self.name = "Axn::Validation::Fields::OneOff"
validations.each do |field, field_validations|
field_validations.each do |key, value|
validates field, key => value
end
end
end.new(context)
return if validator.valid?
raise exception_klass, validator.errors
end
|
Instance Method Details
#read_attribute_for_validation(attr) ⇒ Object
19
20
21
22
23
|
# File 'lib/axn/core/validation/fields.rb', line 19
def read_attribute_for_validation(attr)
@context.public_send(attr)
end
|
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
34
35
36
37
38
39
|
# File 'lib/axn/core/validation/fields.rb', line 34
def respond_to_missing?(method_name, include_private = false)
action = _action_for_validation
return super unless action
action.respond_to?(method_name, include_private) || super
end
|