active_model_form_objects 0.4.0 → 0.6.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: 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