path_utilities 0.2.1 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2b7502ba893053e501ec2229acc66407c0460915
4
- data.tar.gz: d65fd5e8c0d9279c4a4656dd75c64b49cfba9e00
3
+ metadata.gz: 016c2c9cb836407b9f993c5fb039a63c49cad5b6
4
+ data.tar.gz: fd2283f919f9caa809f002f15ff2bce71542636a
5
5
  SHA512:
6
- metadata.gz: adc011c7fd64d9191422762b6b66a66fd4679b68593263e94acfac791a7ea29d8d53a6107ee47fe423392b92eb87626f7985c354f9e1fbcc386d0d23659a2c9d
7
- data.tar.gz: c5e29a2bf94ef8dbf3649b82ecb107a7e48daed5c57cef86e1efebfbdc7f9348b51c3df1ce172866eb95c9417b2004c2b44d3db93c2d8a2658e2c18d83b2d140
6
+ metadata.gz: 234decbe01ceb25ea6468248427c99cd1019eec971a3694b8ee3e788de6fe90fa6fbcd92f75cc6092cdde9564483b6921daefcec5911b7a8353520b7fc925ca5
7
+ data.tar.gz: a6e0670724b73f22a689e01a8c70f7ff47b195f7b694a281fbc7860350ba13d7fb23b105d2199a8473b15ae74e9582accbfa1ca98f96a6c6f2a98de9e3a95055
@@ -0,0 +1,13 @@
1
+ module PathUtilities
2
+ module Form
3
+ module TrackingChanges
4
+ extend ActiveSupport::Concern
5
+
6
+ def changes?(field)
7
+ form_field_value = send(field)
8
+ model_field_value = instance_model_for(field).send(field)
9
+ model_field_value != form_field_value
10
+ end
11
+ end
12
+ end
13
+ end
@@ -19,7 +19,7 @@ module PathUtilities
19
19
  # If we're inside an ActiveRecord class, and `model` isn't set, use the
20
20
  # default behaviour of the validator.
21
21
  #
22
- elsif ! options[:model]
22
+ elsif !options[:model]
23
23
  super
24
24
 
25
25
  # Custom validator options. The validator can be called in any class, as
@@ -33,12 +33,16 @@ module PathUtilities
33
33
 
34
34
  attribute = options[:attribute].to_sym if options[:attribute]
35
35
  record = options[:model].new(attribute => value)
36
+ is_new_record = record_org.instance_model_for(attribute).new_record?
36
37
 
37
- super
38
+ if is_new_record || record_org.changes?(attribute)
39
+ super
40
+
41
+ if record.errors.any?
38
42
 
39
- if record.errors.any?
40
- record_org.errors.add(attribute_org, :taken,
41
- options.except(:case_sensitive, :scope).merge(value: value))
43
+ record_org.errors.add(attribute_org, :taken,
44
+ options.except(:case_sensitive, :scope).merge(value: value))
45
+ end
42
46
  end
43
47
  end
44
48
  end
@@ -9,12 +9,14 @@ module PathUtilities
9
9
  extend ActiveSupport::Concern
10
10
 
11
11
  autoload :UniquenessValidator, 'path_utilities/form/uniqueness_validator'
12
+ autoload :TrackingChanges, 'path_utilities/form/tracking_changes'
12
13
 
13
14
  included do
14
15
  include Virtus.model
15
16
  extend ActiveModel::Naming
16
17
  include ActiveModel::Conversion
17
18
  include ActiveModel::Validations
19
+ include TrackingChanges
18
20
 
19
21
  attr_reader :models_mapping
20
22
 
@@ -33,7 +35,9 @@ module PathUtilities
33
35
 
34
36
  def validate(params)
35
37
  self.class.fields.keys.each do |field|
36
- send("#{field}=", params[field]) if params[field].present?
38
+ if params[field].present?
39
+ send("#{field}=", params[field])
40
+ end
37
41
  end
38
42
 
39
43
  valid?
@@ -1,3 +1,3 @@
1
1
  module PathUtilities
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: path_utilities
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricard Forniol Agustí
@@ -169,6 +169,7 @@ files:
169
169
  - bin/setup
170
170
  - lib/path_utilities.rb
171
171
  - lib/path_utilities/form.rb
172
+ - lib/path_utilities/form/tracking_changes.rb
172
173
  - lib/path_utilities/form/uniqueness_validator.rb
173
174
  - lib/path_utilities/form/uniqueness_validator/mongoid.rb
174
175
  - lib/path_utilities/version.rb