Module: Stretchy::Utils::Validation
Defined Under Namespace
Modules: ClassMethods, Constructor
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
5
6
7
8
9
|
# File 'lib/stretchy/utils/validation.rb', line 5
def self.included(base)
base.send(:include, Virtus.model)
base.class_exec { include Constructor }
base.extend(ClassMethods)
end
|
Instance Method Details
#errors ⇒ Object
49
50
51
|
# File 'lib/stretchy/utils/validation.rb', line 49
def errors
validator.errors
end
|
#json_attributes ⇒ Object
53
54
55
|
# File 'lib/stretchy/utils/validation.rb', line 53
def json_attributes
self.attributes.reject{|key, val| val.nil? || (val.respond_to?(:empty?) && val.empty?) }
end
|
#require_one!(*attrs) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/stretchy/utils/validation.rb', line 19
def require_one!(*attrs)
rule = ::Validation::Rule::Required.new
errors = {}
unless attrs.any? {|a| rule.valid_value?( send(a) ) }
raise Errors::ValidationError.new(
attrs.join(', ') => {
rule: :require_one_of
}
)
end
true
end
|
#require_only_one!(*attrs) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/stretchy/utils/validation.rb', line 32
def require_only_one!(*attrs)
rule = ::Validation::Rule::Required.new
errors = {}
if attrs.select {|a| rule.valid_value?( send(a) ) }.count > 1
raise Errors::ValidationError.new(
attrs.join(', ') => {
rule: :require_only_one
}
)
end
true
end
|
#valid? ⇒ Boolean
45
46
47
|
# File 'lib/stretchy/utils/validation.rb', line 45
def valid?
validator.valid?
end
|
#validate! ⇒ Object
15
16
17
|
# File 'lib/stretchy/utils/validation.rb', line 15
def validate!
raise Errors::ValidationError.new(errors) unless valid?
end
|
#validator ⇒ Object
11
12
13
|
# File 'lib/stretchy/utils/validation.rb', line 11
def validator
@validator ||= self.class.validator.new(self)
end
|