u-case 2.0.0.pre.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +26 -0
- data/lib/micro/case/version.rb +1 -1
- data/lib/micro/case/with_validation.rb +15 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a64ec32f1fc225bd83e86b56a34eca857b1e1e220e84bd35b64b5324d3d74b60
|
4
|
+
data.tar.gz: 23d17b47d23384fba17ace8e96b22ce07f4d42f01d676e7c29c88d99e9fc2b77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b3732611a933699d9b8dfa8db011e58a317565eb7f2ab13c9f965f92f2369ac10838c99cdd1c54a977ed0e2afcf11801f8b233e62615208406da323dfab2d66
|
7
|
+
data.tar.gz: 5e967876fadc6093232c9c5d2d2a70b835cad1b7e670b61d6667cacd50ab0e5b9632ecb6fa231cb09e5f7826a26c4188911dc6fca3b3a4eb970b3eda22f1a50b
|
data/README.md
CHANGED
@@ -34,6 +34,7 @@ The main goals of this project are:
|
|
34
34
|
- [What is a strict use case?](#what-is-a-strict-use-case)
|
35
35
|
- [Is there some feature to auto handle exceptions inside of a use case or flow?](#is-there-some-feature-to-auto-handle-exceptions-inside-of-a-use-case-or-flow)
|
36
36
|
- [How to validate use case attributes?](#how-to-validate-use-case-attributes)
|
37
|
+
- [If I enable the auto validation, is it possible to disable it only in some specific use case classes?](#if-i-enable-the-auto-validation-is-it-possible-to-disable-it-only-in-some-specific-use-case-classes)
|
37
38
|
- [Examples](#examples)
|
38
39
|
- [Comparisons](#comparisons)
|
39
40
|
- [Benchmarks](#benchmarks)
|
@@ -729,6 +730,31 @@ end
|
|
729
730
|
# Micro::Case::Strict and Micro::Case::Safe classes will inherit this new behavior.
|
730
731
|
```
|
731
732
|
|
733
|
+
#### If I enable the auto validation, is it possible to disable it only in some specific use case classes?
|
734
|
+
|
735
|
+
Answer: Yes, it is. To do this, you only need to use the `disable_auto_validation` macro. e.g:
|
736
|
+
|
737
|
+
```ruby
|
738
|
+
require 'u-case/with_validation'
|
739
|
+
|
740
|
+
class Multiply < Micro::Case
|
741
|
+
disable_auto_validation
|
742
|
+
|
743
|
+
attribute :a
|
744
|
+
attribute :b
|
745
|
+
validates :a, :b, presence: true, numericality: true
|
746
|
+
|
747
|
+
def call!
|
748
|
+
Success(number: a * b)
|
749
|
+
end
|
750
|
+
end
|
751
|
+
|
752
|
+
Multiply.call(a: 2, b: 'a')
|
753
|
+
|
754
|
+
# The output will be the following exception:
|
755
|
+
# TypeError (String can't be coerced into Integer)
|
756
|
+
```
|
757
|
+
|
732
758
|
[⬆️ Back to Top](#table-of-contents-)
|
733
759
|
|
734
760
|
### Examples
|
data/lib/micro/case/version.rb
CHANGED
@@ -6,10 +6,24 @@ module Micro
|
|
6
6
|
class Case
|
7
7
|
include Micro::Attributes::Features::ActiveModelValidations
|
8
8
|
|
9
|
+
def self.auto_validation_disabled?
|
10
|
+
@disable_auto_validation
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.disable_auto_validation
|
14
|
+
@disable_auto_validation = true
|
15
|
+
end
|
16
|
+
|
9
17
|
def call
|
10
|
-
return
|
18
|
+
return failure_by_validation_error(self) if !self.class.auto_validation_disabled? && invalid?
|
11
19
|
|
12
20
|
__call
|
13
21
|
end
|
22
|
+
|
23
|
+
private def failure_by_validation_error(object)
|
24
|
+
errors = object.respond_to?(:errors) ? object.errors : object
|
25
|
+
|
26
|
+
Failure(:validation_error) { { errors: errors } }
|
27
|
+
end
|
14
28
|
end
|
15
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: u-case
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Serradura
|
@@ -99,9 +99,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
99
|
version: 2.2.0
|
100
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
102
|
+
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
104
|
+
version: '0'
|
105
105
|
requirements: []
|
106
106
|
rubygems_version: 3.0.3
|
107
107
|
signing_key:
|