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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d11a7bca66a16c56a3f42fc3062e862173dbd9ea
|
4
|
+
data.tar.gz: bb94a6baa25e8fdda5121bd969c871d7ec46c182
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
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
|
+
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-
|
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.
|
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:
|
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
|