active_model_form_objects 0.4.0 → 0.6.0

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: 66b44bddf948eeddd0b84d80bf79ae7bf105dee6
4
- data.tar.gz: d05940a270276d40209c1db0b2b61e5fa2bb068c
3
+ metadata.gz: d11a7bca66a16c56a3f42fc3062e862173dbd9ea
4
+ data.tar.gz: bb94a6baa25e8fdda5121bd969c871d7ec46c182
5
5
  SHA512:
6
- metadata.gz: a1e40d8c24f9a4a55f6dbce46d5917f56a8400fca6ca55c6221b90d7ddb9cea0e71790af08f599653fc1a9567dcfcfcb12cdcd2f695d4ad00e0261217349bd34
7
- data.tar.gz: ae52abc9c9ac0b84316f7e035219db060b3561d8cee9783be537b21eca3d9f461a06216983250ad4e8c997f216afe6dc6d97eeae97548322f92b97c715600c30
6
+ metadata.gz: a21b0a4d3d747e3cb46cbc0e5b84b98fb7b6e402cf7eddfcbad680e2c291529f0ed329dded15b82e40a6d7419f6b9a8fce770913cfe0239b889ca032deba14b8
7
+ data.tar.gz: c6c4ae94c36cfbbf18acb962c18f66d48357b606489dff6156e1b8a4d0857f6b0d68c11cf43954b1fdd488127ca8e3438da6efb700cd753bc4633f8b2a0609d7
@@ -2,6 +2,7 @@ module ActiveModel
2
2
  module FormObject
3
3
  require_relative "form_object/railtie" if defined?(Rails)
4
4
  require_relative 'form_object/validators/nested_validator'
5
+ require_relative 'form_object/validators/permitted_params_validator'
5
6
  require_relative 'form_object/strong_parameters'
6
7
 
7
8
  def self.included klass
@@ -4,6 +4,7 @@ module ActiveModel
4
4
 
5
5
  def self.included(klass)
6
6
  klass.extend(ClassMethods)
7
+ attr_accessor :unpermitted_attrs
7
8
  end
8
9
 
9
10
  module ClassMethods
@@ -28,15 +29,18 @@ module ActiveModel
28
29
  opts.each do |key, value|
29
30
  klass.send(:define_method, "#{key}_params".to_sym) do
30
31
  params = self.send(parameter_name)
32
+
31
33
  unless params[key].nil?
32
- self.send(parameter_name).require(key).permit(value)
34
+ self.unpermitted_attrs ||= {}
35
+ unpermitted = params[key].keys.map(&:to_s) - value.map(&:to_s)
36
+ self.unpermitted_attrs[key] = unpermitted if unpermitted.any?
33
37
  end
38
+
39
+ params.require(key).permit(value)
34
40
  end
35
41
  end
36
-
37
42
  end
38
43
  end
39
-
40
44
  end
41
45
  end
42
46
  end
@@ -0,0 +1,32 @@
1
+ module ActiveModel
2
+ module FormObject
3
+ module Validators
4
+ class PermittedParamsValidator < ActiveModel::EachValidator
5
+ def validate_each(record, attribute, value)
6
+ if record.send(attribute).present?
7
+ each_unpermitted_attr(record.unpermitted_attrs) do |value|
8
+ add_error(record, attribute, value)
9
+ end
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def each_unpermitted_attr(unpermitted_attrs, &b)
16
+ if unpermitted_attrs.any?
17
+ unpermitted_attrs.each do |key, value|
18
+ value.each do |a|
19
+ b.call(a)
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ def add_error(record, key, attr)
26
+ record.errors[key] ||= []
27
+ record.errors[key] << "#{attr} is not permitted"
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,3 @@
1
1
  module ActiveModelFormObjects
2
- VERSION = "0.4.0"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_form_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Freer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-07 00:00:00.000000000 Z
11
+ date: 2014-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.0.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.0.2
27
27
  - !ruby/object:Gem::Dependency
@@ -44,14 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 3.0.0.beta2
47
+ version: 3.0.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-activemodel-mocks
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.1
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ~>
53
67
  - !ruby/object:Gem::Version
54
- version: 3.0.0.beta2
68
+ version: 1.0.1
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: database_cleaner
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -146,6 +160,7 @@ files:
146
160
  - lib/active_model/form_object/railtie.rb
147
161
  - lib/active_model/form_object/strong_parameters.rb
148
162
  - lib/active_model/form_object/validators/nested_validator.rb
163
+ - lib/active_model/form_object/validators/permitted_params_validator.rb
149
164
  - lib/active_model/form_object/version.rb
150
165
  - lib/active_model/form_object.rb
151
166
  - lib/active_model_form_objects.rb