Class: Datacaster::Validator
- Inherits:
-
Base
- Object
- Base
- Datacaster::Validator
show all
- Defined in:
- lib/datacaster/validator.rb
Constant Summary
collapse
- @@validations =
{}
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Mixin
#&, #*, #call, #call_with_runtime, #cast_errors, #i18n_key, #i18n_map_keys, #i18n_scope, #i18n_vars, #then, #with_context, #with_object_context, #with_runtime, #|
Constructor Details
#initialize(validations) ⇒ Validator
Returns a new instance of Validator.
22
23
24
25
26
27
28
29
|
# File 'lib/datacaster/validator.rb', line 22
def initialize(validations)
require 'active_model'
if Config.i18n_module == SubstituteI18n
raise NotImplementedError, "Using ActiveModel validations requires ruby-i18n or another i18n gem instead of datacaster's built-in", caller
end
@validator = self.class.create_active_model(validations)
end
|
Class Method Details
.create_active_model(validations) ⇒ Object
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/datacaster/validator.rb', line 5
def self.create_active_model(validations)
@@validations[validations] ||=
Class.new do
include ActiveModel::Validations
attr_accessor :value
def self.model_name
ActiveModel::Name.new(self, nil, "ValidatorModel")
end
if validations.present?
validates :value, validations
end
end.new
end
|
Instance Method Details
#cast(object, runtime:) ⇒ Object
31
32
33
34
|
# File 'lib/datacaster/validator.rb', line 31
def cast(object, runtime:)
@validator.value = object
@validator.valid? ? Datacaster.ValidResult(object) : Datacaster.ErrorResult(@validator.errors[:value])
end
|
#inspect ⇒ Object
36
37
38
|
# File 'lib/datacaster/validator.rb', line 36
def inspect
"#<Datacaster::Validator>"
end
|