rectify 0.9.1 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed179d09baec15d8adc4c6bcf6c78bcc4766e71e
4
- data.tar.gz: 486c246e99345dee440152d904b37dd004f1600a
3
+ metadata.gz: 765fc6e3fd9b5d66f59f4a5c2b279f2eae06a5d7
4
+ data.tar.gz: 41379b062e59c2be3be9507565704dc230b0191b
5
5
  SHA512:
6
- metadata.gz: e1dbacf58c68b37a38c3263f4cd5d0382ca6ac75ba65b9a48194425c19de4763cb1613f600d0e42b03996d621910fcb331c151a566f0fc9e124b2f875187735c
7
- data.tar.gz: 8ea6e909cf18ef9fc5a1a2b6476338c75ecde7d73302677a26b0c495db48cb735eeb8dbbc9578698f865b750c5b4eedbb1fc522eb0708de438a830853ce2f9bf
6
+ metadata.gz: dfefaa5dd1fb1954cfabf1a1e86f5469c60c6329a8037ad99461ba375a5e1d80ec20ebf8a367c8647e10a86c895f04ee9a34fc6f9dc7c9bc6cd5dd7d0e5a31f1
7
+ data.tar.gz: 8936f106a590145d25c12c661e337c0e906b5fefc81b7ac42eb7d2ef4ad14e4a54f121d8c5ccfd1879aa8b2f97d3e820ff37eb47449facf0d68808178aff453d
data/lib/rectify/form.rb CHANGED
@@ -58,10 +58,21 @@ module Rectify
58
58
  id.present? && id.to_i > 0
59
59
  end
60
60
 
61
- def valid?(context = nil)
61
+ def valid?(options = {})
62
62
  before_validation
63
63
 
64
- [super, form_attributes_valid?, arrays_attributes_valid?].all?
64
+ options = {} if options.blank?
65
+ context = options[:context]
66
+ validations = [super(context)]
67
+
68
+ validations << form_attributes_valid? unless options[:exclude_nested]
69
+ validations << array_attributes_valid? unless options[:exclude_arrays]
70
+
71
+ validations.all?
72
+ end
73
+
74
+ def invalid?(options = {})
75
+ !valid?(options)
65
76
  end
66
77
 
67
78
  def to_key
@@ -119,7 +130,7 @@ module Rectify
119
130
  .all?
120
131
  end
121
132
 
122
- def arrays_attributes_valid?
133
+ def array_attributes_valid?
123
134
  array_attributes_that_respond_to(:valid?)
124
135
  .map(&:valid?)
125
136
  .all?
@@ -1,3 +1,3 @@
1
1
  module Rectify
2
- VERSION = "0.9.1".freeze
2
+ VERSION = "0.10.0".freeze
3
3
  end
data/readme.md CHANGED
@@ -371,6 +371,43 @@ your form as well as any (deeply) nested form objects and array attributes that
371
371
  contain form objects. There is also an `#invalid?` method that returns the
372
372
  opposite of `#valid?`.
373
373
 
374
+ The `#valid?` and `#invalid?` methods also take a set of options. These options allow
375
+ you to not validate nested form objects or array attributes that contain form objects.
376
+ For example:
377
+
378
+ ```ruby
379
+ class UserForm < Rectify::Form
380
+ attribute :name, String
381
+ attribute :address, AddressForm
382
+ attribute :contacts, Array[ContactForm]
383
+
384
+ validates :name, :presence => true
385
+ end
386
+
387
+ class AddressForm < Rectify::Form
388
+ attribute :street, String
389
+ attribute :town, String
390
+ attribute :city, String
391
+ attribute :post_code, String
392
+
393
+ validates :street, :post_code, :presence => true
394
+ end
395
+
396
+ class ContactForm < Rectify::Form
397
+ attribute :name, String
398
+ attribute :number, String
399
+
400
+ validates :name, :presence => true
401
+ end
402
+
403
+ form = UserForm.from_params(params)
404
+
405
+ form.valid?(:exclude_nested => true, :exclude_arrays => true)
406
+ ```
407
+
408
+ In this case, the `UserForm` attributes will be validated (`name` in the example above)
409
+ but the `address` and `contacts` will not be validated.
410
+
374
411
  ### Deep Context
375
412
 
376
413
  It's sometimes useful to have some context within your form objects when performing
@@ -1054,11 +1091,11 @@ application. Something like the following:
1054
1091
  └── app
1055
1092
  ├── controllers
1056
1093
  ├── core
1057
-    ├── billing
1058
-    ├── fulfillment
1059
-    ├── ordering
1060
-    ├── reporting
1061
-    └── security
1094
+ ├── billing
1095
+ ├── fulfillment
1096
+ ├── ordering
1097
+ ├── reporting
1098
+ └── security
1062
1099
  ├── models
1063
1100
  └── views
1064
1101
  ```
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rectify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Pike
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-29 00:00:00.000000000 Z
11
+ date: 2017-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
181
195
  description: Build Rails apps in a more maintainable way
182
196
  email: andy@andypike.com
183
197
  executables: []