lotus-validations 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +5 -5
- data/lib/lotus/validations.rb +4 -1
- data/lib/lotus/validations/attribute_definer.rb +40 -7
- data/lib/lotus/validations/nested_attributes.rb +22 -0
- data/lib/lotus/validations/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0698ed51ac049cae199e98abad4addfbb485845f
|
4
|
+
data.tar.gz: 3c76854dfa9d49e51d794e0d42c13912316e2271
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2be7bcf9a481123a449ae177dc8e3bf1becb08678e460b7ac4cb08c21dd784401a5e34be547ea9c537d11fa12bef586dac9407705d5713f26c0443998cbf7b87
|
7
|
+
data.tar.gz: 3080435f881d64ae783f145c06f9005e5a3cd4a1825aaf49fbb3bd49de0c44224a29eefd2407b802e00a5e3186ed5c2b022d2bc3a3395c6cc10f412329f0ab30
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# Lotus::Validations
|
2
2
|
Validations mixin for Ruby objects
|
3
3
|
|
4
|
+
## v0.3.1 - 2015-05-15
|
5
|
+
### Fixed
|
6
|
+
- [Luca Guidi] Fixed Hash serialization for nested validations. It always return nested `::Hash` structure.
|
7
|
+
- [Alfonso Uceda Pompa & Dmitry Tymchuk] Fixed Hash serialization when `Lotus::Entity` is included in the same class.
|
8
|
+
|
4
9
|
## v0.3.0 - 2015-03-23
|
5
10
|
|
6
11
|
## v0.2.4 - 2015-01-30
|
data/README.md
CHANGED
@@ -197,7 +197,7 @@ signup.valid? # => false
|
|
197
197
|
An attribute is valid if it's value and the value of a corresponding attribute
|
198
198
|
is valid.
|
199
199
|
|
200
|
-
By convention, if you have a `password` attribute, the validation looks for `
|
200
|
+
By convention, if you have a `password` attribute, the validation looks for `password_confirmation`.
|
201
201
|
|
202
202
|
```ruby
|
203
203
|
require 'lotus/validations'
|
@@ -386,7 +386,7 @@ validator.valid? # => false
|
|
386
386
|
```
|
387
387
|
|
388
388
|
Bulk operations on errors are guaranteed by `#each`.
|
389
|
-
This method yields a **
|
389
|
+
This method yields a **flattened collection of errors**.
|
390
390
|
|
391
391
|
```ruby
|
392
392
|
validator.errors.each do |error|
|
@@ -483,9 +483,9 @@ end
|
|
483
483
|
|
484
484
|
### Errors
|
485
485
|
|
486
|
-
When you invoke `#valid?`,
|
486
|
+
When you invoke `#valid?`, validation errors are available at `#errors`.
|
487
487
|
It's a set of errors grouped by attribute. Each error contains the name of the
|
488
|
-
invalid attribute, the failed validation, the expected value and the current one.
|
488
|
+
invalid attribute, the failed validation, the expected value, and the current one.
|
489
489
|
|
490
490
|
```ruby
|
491
491
|
require 'lotus/validations'
|
@@ -518,7 +518,7 @@ signup.errors
|
|
518
518
|
|
519
519
|
### Lotus::Entity
|
520
520
|
|
521
|
-
Integration with [`Lotus::Entity`](https://github.com/lotus/model) is
|
521
|
+
Integration with [`Lotus::Entity`](https://github.com/lotus/model) is straight forward.
|
522
522
|
|
523
523
|
```ruby
|
524
524
|
require 'lotus/model'
|
data/lib/lotus/validations.rb
CHANGED
@@ -244,7 +244,10 @@ module Lotus
|
|
244
244
|
#
|
245
245
|
# @since 0.1.0
|
246
246
|
def to_h
|
247
|
-
|
247
|
+
# TODO remove this symbolization when we'll support Ruby 2.2+ only
|
248
|
+
Utils::Hash.new(
|
249
|
+
@attributes
|
250
|
+
).deep_dup.symbolize!.to_h
|
248
251
|
end
|
249
252
|
|
250
253
|
private
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'set'
|
2
2
|
require 'lotus/utils/attributes'
|
3
|
+
require 'lotus/validations/nested_attributes'
|
3
4
|
|
4
5
|
module Lotus
|
5
6
|
module Validations
|
@@ -254,6 +255,16 @@ module Lotus
|
|
254
255
|
# signup = Signup.new(password: 'short')
|
255
256
|
# signup.valid? # => false
|
256
257
|
def attribute(name, options = {}, &block)
|
258
|
+
_attribute(name, options, &block)
|
259
|
+
end
|
260
|
+
|
261
|
+
# Define an attribute
|
262
|
+
#
|
263
|
+
# @see Lotus::Validations::AttributeDefiner#attribute
|
264
|
+
#
|
265
|
+
# @since 0.3.1
|
266
|
+
# @api private
|
267
|
+
def _attribute(name, options = {}, &block)
|
257
268
|
if block_given?
|
258
269
|
define_nested_attribute(name, options, &block)
|
259
270
|
validates(name, {})
|
@@ -357,12 +368,8 @@ module Lotus
|
|
357
368
|
#
|
358
369
|
# @since 0.2.4
|
359
370
|
# @api private
|
360
|
-
def build_validation_class(&
|
361
|
-
|
362
|
-
include Lotus::Validations
|
363
|
-
end
|
364
|
-
kls.class_eval(&block)
|
365
|
-
kls
|
371
|
+
def build_validation_class(&blk)
|
372
|
+
NestedAttributes.fabricate(&blk)
|
366
373
|
end
|
367
374
|
end
|
368
375
|
|
@@ -401,13 +408,33 @@ module Lotus
|
|
401
408
|
end
|
402
409
|
end
|
403
410
|
|
411
|
+
# @return [Array<String>]
|
412
|
+
#
|
413
|
+
# @since 0.3.1
|
414
|
+
# @api private
|
415
|
+
def defined_attributes
|
416
|
+
super
|
417
|
+
@defined_attributes.merge(attributes.map(&:to_s))
|
418
|
+
end
|
419
|
+
|
420
|
+
# Override attribute accessors function.
|
421
|
+
#
|
422
|
+
# @since 0.3.1
|
423
|
+
#
|
424
|
+
# @api private
|
425
|
+
# @see Lotus::Model::Entity#define_attr_accessor
|
426
|
+
def define_attr_accessor(attr)
|
427
|
+
_attribute(attr)
|
428
|
+
super
|
429
|
+
end
|
430
|
+
|
404
431
|
# @since 0.2.3
|
405
432
|
# @api private
|
406
433
|
#
|
407
434
|
# @see Lotus::Validations::AttributeDefiner#attribute
|
408
435
|
def attribute(name, options = {})
|
409
|
-
super
|
410
436
|
attributes name
|
437
|
+
super
|
411
438
|
end
|
412
439
|
|
413
440
|
# @since 0.2.3
|
@@ -430,6 +457,12 @@ module Lotus
|
|
430
457
|
def assign_attribute?(attr)
|
431
458
|
super || attr.to_s == LOTUS_ENTITY_ID
|
432
459
|
end
|
460
|
+
|
461
|
+
def initialize(attributes = {})
|
462
|
+
super
|
463
|
+
@attributes.set(LOTUS_ENTITY_ID, id)
|
464
|
+
self.class.attribute(LOTUS_ENTITY_ID)
|
465
|
+
end
|
433
466
|
end
|
434
467
|
end
|
435
468
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Lotus
|
2
|
+
module Validations
|
3
|
+
# @since 0.3.1
|
4
|
+
# @api private
|
5
|
+
class NestedAttributes
|
6
|
+
# @since 0.3.1
|
7
|
+
# @api private
|
8
|
+
def self.fabricate(&blk)
|
9
|
+
dup.tap do |klass|
|
10
|
+
klass.class_eval { include Lotus::Validations }
|
11
|
+
klass.class_eval(&blk)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# @since 0.3.1
|
16
|
+
# @api private
|
17
|
+
def lotus_nested_attributes?
|
18
|
+
true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lotus-validations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-05-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: lotus-utils
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/lotus/validations/coercions.rb
|
87
87
|
- lib/lotus/validations/error.rb
|
88
88
|
- lib/lotus/validations/errors.rb
|
89
|
+
- lib/lotus/validations/nested_attributes.rb
|
89
90
|
- lib/lotus/validations/validation_set.rb
|
90
91
|
- lib/lotus/validations/validator.rb
|
91
92
|
- lib/lotus/validations/version.rb
|