stronger_parameters 1.2.0 → 2.0.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 +4 -4
- data/README.md +50 -25
- data/lib/stronger_parameters.rb +0 -1
- data/lib/stronger_parameters/constraints.rb +12 -5
- data/lib/stronger_parameters/constraints/array_constraint.rb +4 -2
- data/lib/stronger_parameters/constraints/boolean_constraint.rb +1 -1
- data/lib/stronger_parameters/constraints/comparison_constraints.rb +4 -4
- data/lib/stronger_parameters/constraints/date_time_constraint.rb +15 -0
- data/lib/stronger_parameters/constraints/enumeration_constraint.rb +1 -1
- data/lib/stronger_parameters/constraints/float_constraint.rb +15 -0
- data/lib/stronger_parameters/constraints/hash_constraint.rb +1 -1
- data/lib/stronger_parameters/constraints/integer_constraint.rb +1 -1
- data/lib/stronger_parameters/constraints/nil_constraint.rb +11 -0
- data/lib/stronger_parameters/constraints/nil_string_contraint.rb +15 -0
- data/lib/stronger_parameters/constraints/regexp_constraint.rb +26 -0
- data/lib/stronger_parameters/constraints/string_constraint.rb +2 -2
- data/lib/stronger_parameters/errors.rb +10 -9
- data/lib/stronger_parameters/parameters.rb +51 -14
- data/lib/stronger_parameters/version.rb +1 -1
- metadata +35 -3
- data/lib/stronger_parameters/railtie.rb +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1bd826f84e376bd4d0b5c557b5770f40f08f653b
|
|
4
|
+
data.tar.gz: 7acf03a25fa7b77ff84b238252fa39cf13812df5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 23fd6b95f810e7637c4efa87e27d98b6d7a3b71932d812d7e3b604c9127e745be91441d34460983352a663b78ddc7cbaf9c9fb061c2a1abf4f2cd06decf0d81e
|
|
7
|
+
data.tar.gz: b213e7733e7123d08cc8f963b28e006e334e5a241482f873184af7d33038bc14daded5154e982879804eadf03982a9f72eea4be5d34cd47828a1ad50918bb6b3
|
data/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# stronger_parameters
|
|
2
2
|
[](https://travis-ci.org/zendesk/stronger_parameters)
|
|
3
3
|
|
|
4
|
-
This is an extension of `strong_parameters` with added type checking.
|
|
4
|
+
This is an extension of `strong_parameters` with added type checking and conversion.
|
|
5
5
|
|
|
6
6
|
## Simple types
|
|
7
7
|
You can specify simple types like this:
|
|
8
8
|
|
|
9
9
|
```ruby
|
|
10
10
|
params.permit(
|
|
11
|
-
:
|
|
12
|
-
:
|
|
11
|
+
id: Parameters.id,
|
|
12
|
+
name: Parameters.string
|
|
13
13
|
)
|
|
14
14
|
```
|
|
15
15
|
|
|
@@ -18,25 +18,34 @@ You can specify arrays like this:
|
|
|
18
18
|
|
|
19
19
|
```ruby
|
|
20
20
|
params.permit(
|
|
21
|
-
:
|
|
21
|
+
id: Parameters.array(Parameters.id)
|
|
22
22
|
)
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
This will allow an array of id parameters that all are IDs.
|
|
25
|
+
This will allow an array of id parameters that all are IDs (integer less than 2**31, greater than 0) and convert to Fixnum (`'2' --> 2`).
|
|
26
|
+
|
|
27
|
+
### Empty array -> nil
|
|
28
|
+
Rails converts empty arrays to nil unless `config.action_dispatch.perform_deep_munge = false` is set
|
|
29
|
+
(available in Rails 4.1+). Either use this or `Parameters.array | Parameters.nil` to deal with this.
|
|
30
|
+
|
|
31
|
+
### Allowing nils
|
|
32
|
+
|
|
33
|
+
It can be convenient to allow nil to be passed as all kinds of attributes since ActiveRecord converts it to false/0 behind the scenes.
|
|
34
|
+
`ActionController::Parameters.allow_nil_for_everything = true`
|
|
26
35
|
|
|
27
36
|
## Nested Parameters
|
|
28
37
|
|
|
29
38
|
```ruby
|
|
30
39
|
params.permit(
|
|
31
|
-
:
|
|
32
|
-
:
|
|
33
|
-
:
|
|
40
|
+
name: Parameters.string,
|
|
41
|
+
emails: Parameters.array(Parameters.string),
|
|
42
|
+
friends: Parameters.array(
|
|
34
43
|
Parameters.map(
|
|
35
|
-
:
|
|
36
|
-
:
|
|
37
|
-
:
|
|
44
|
+
name: Parameters.string,
|
|
45
|
+
family: Parameters.map(
|
|
46
|
+
name: Parameters.string
|
|
38
47
|
)
|
|
39
|
-
:
|
|
48
|
+
hobbies: Parameters.array(Parameters.string)
|
|
40
49
|
)
|
|
41
50
|
)
|
|
42
51
|
)
|
|
@@ -59,12 +68,12 @@ This will allow parameters like this:
|
|
|
59
68
|
|
|
60
69
|
```ruby
|
|
61
70
|
params.require(:author).permit(
|
|
62
|
-
:
|
|
63
|
-
:
|
|
71
|
+
name: Parameters.string,
|
|
72
|
+
books_attributes: Parameters.array(
|
|
64
73
|
Parameters.map(
|
|
65
|
-
:
|
|
66
|
-
:
|
|
67
|
-
:
|
|
74
|
+
title: Parameters.string,
|
|
75
|
+
id: Parameters.id,
|
|
76
|
+
_destroy: Parameters.boolean
|
|
68
77
|
)
|
|
69
78
|
)
|
|
70
79
|
)
|
|
@@ -90,7 +99,7 @@ If you want to permit a parameter to be one of multiple types, you can use the `
|
|
|
90
99
|
|
|
91
100
|
```ruby
|
|
92
101
|
params.require(:ticket).permit(
|
|
93
|
-
:
|
|
102
|
+
status: Parameters.id | Parameters.enum('open', 'closed')
|
|
94
103
|
)
|
|
95
104
|
```
|
|
96
105
|
|
|
@@ -115,7 +124,7 @@ You can use the `&` operator to apply further restrictions on the type:
|
|
|
115
124
|
|
|
116
125
|
```ruby
|
|
117
126
|
params.require(:user).permit(
|
|
118
|
-
:
|
|
127
|
+
age: Parameters.integer & Parameters.gte(0)
|
|
119
128
|
)
|
|
120
129
|
```
|
|
121
130
|
|
|
@@ -127,7 +136,7 @@ You can also use the `|` and `&` operators in arrays:
|
|
|
127
136
|
|
|
128
137
|
```ruby
|
|
129
138
|
params.require(:group).permit(
|
|
130
|
-
:
|
|
139
|
+
users: Parameters.array(Parameters.id | Parameters.string)
|
|
131
140
|
)
|
|
132
141
|
```
|
|
133
142
|
|
|
@@ -140,19 +149,35 @@ This will permit these parameters:
|
|
|
140
149
|
}
|
|
141
150
|
```
|
|
142
151
|
|
|
152
|
+
## Production rollout
|
|
153
|
+
|
|
154
|
+
Just want to log violations in production:
|
|
155
|
+
|
|
156
|
+
```Ruby
|
|
157
|
+
# config/environments/production.rb
|
|
158
|
+
ActionController::Parameters.action_on_invalid_parameters = :log
|
|
159
|
+
```
|
|
160
|
+
|
|
143
161
|
## Types
|
|
144
162
|
|
|
145
163
|
| Syntax | (Simplified) Definition |
|
|
146
164
|
|--------------------------------|-------------------------------------------------------------------------|
|
|
147
165
|
| Parameters.string | value.is_a?(String) |
|
|
148
|
-
| Parameters.integer | value.is_a?(Fixnum)
|
|
166
|
+
| Parameters.integer | value.is_a?(Fixnum) or '-1' |
|
|
167
|
+
| Parameters.float | value.is_a?(Float) or '-1.2' |
|
|
168
|
+
| Parameters.datetime | value.is_a?(DateTime) or '2014-05-13' or '2015-03-31T14:34:56Z' |
|
|
169
|
+
| Parameters.regexp(/foo/) | value =~ regexp |
|
|
149
170
|
| Parameters.enum('asc', 'desc') | ['asc', 'desc'].include?(value) |
|
|
150
171
|
| Parameters.lt(10) | value < 10 |
|
|
151
172
|
| Parameters.lte(10) | value <= 10 |
|
|
152
173
|
| Parameters.gt(0) | value > 0 |
|
|
153
174
|
| Parameters.gte(0) | value >= 0 |
|
|
154
|
-
| Parameters.integer32 | Parameters.integer & Parameters.
|
|
155
|
-
| Parameters.integer64 | Parameters.integer & Parameters.
|
|
156
|
-
| Parameters.id | Parameters.integer & Parameters.
|
|
157
|
-
| Parameters.bigid | Parameters.integer & Parameters.
|
|
175
|
+
| Parameters.integer32 | Parameters.integer & Parameters.lt(2 ** 31) & Parameters.gte(-2 ** 31) |
|
|
176
|
+
| Parameters.integer64 | Parameters.integer & Parameters.lt(2 ** 63) & Parameters.gte(-2 ** 63) |
|
|
177
|
+
| Parameters.id | Parameters.integer & Parameters.lt(2 ** 31) & Parameters.gte(0) |
|
|
178
|
+
| Parameters.bigid | Parameters.integer & Parameters.lt(2 ** 63) & Parameters.gte(0) |
|
|
179
|
+
| Parameters.uid | Parameters.integer & Parameters.lt(2 ** 32) & Parameters.gte(0) |
|
|
180
|
+
| Parameters.ubigid | Parameters.integer & Parameters.lt(2 ** 64) & Parameters.gte(0) |
|
|
158
181
|
| Parameters.boolean | Parameters.enum(true, false, 'true', 'false', 1, 0) |
|
|
182
|
+
| Parameters.nil | value is nil |
|
|
183
|
+
| Parameters.nil_string | value is nil, '', 'undefined' |
|
data/lib/stronger_parameters.rb
CHANGED
|
@@ -30,14 +30,15 @@ module StrongerParameters
|
|
|
30
30
|
exception = nil
|
|
31
31
|
|
|
32
32
|
constraints.each do |c|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
result = c.value(v)
|
|
34
|
+
if result.is_a?(InvalidValue)
|
|
35
|
+
exception ||= result
|
|
36
|
+
else
|
|
37
|
+
return result
|
|
37
38
|
end
|
|
38
39
|
end
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
exception
|
|
41
42
|
end
|
|
42
43
|
|
|
43
44
|
def |(other)
|
|
@@ -60,6 +61,7 @@ module StrongerParameters
|
|
|
60
61
|
def value(v)
|
|
61
62
|
constraints.each do |c|
|
|
62
63
|
v = c.value(v)
|
|
64
|
+
return v if v.is_a?(InvalidValue)
|
|
63
65
|
end
|
|
64
66
|
v
|
|
65
67
|
end
|
|
@@ -76,9 +78,14 @@ module StrongerParameters
|
|
|
76
78
|
end
|
|
77
79
|
|
|
78
80
|
require 'stronger_parameters/constraints/string_constraint'
|
|
81
|
+
require 'stronger_parameters/constraints/float_constraint'
|
|
82
|
+
require 'stronger_parameters/constraints/date_time_constraint'
|
|
83
|
+
require 'stronger_parameters/constraints/regexp_constraint'
|
|
79
84
|
require 'stronger_parameters/constraints/integer_constraint'
|
|
85
|
+
require 'stronger_parameters/constraints/nil_constraint'
|
|
80
86
|
require 'stronger_parameters/constraints/boolean_constraint'
|
|
81
87
|
require 'stronger_parameters/constraints/array_constraint'
|
|
82
88
|
require 'stronger_parameters/constraints/hash_constraint'
|
|
83
89
|
require 'stronger_parameters/constraints/enumeration_constraint'
|
|
84
90
|
require 'stronger_parameters/constraints/comparison_constraints'
|
|
91
|
+
require 'stronger_parameters/constraints/nil_string_contraint'
|
|
@@ -11,11 +11,13 @@ module StrongerParameters
|
|
|
11
11
|
def value(v)
|
|
12
12
|
if v.is_a?(Array)
|
|
13
13
|
return v.map do |item|
|
|
14
|
-
item_constraint.value(item)
|
|
14
|
+
result = item_constraint.value(item)
|
|
15
|
+
return result if result.is_a?(InvalidValue)
|
|
16
|
+
result
|
|
15
17
|
end
|
|
16
18
|
end
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
InvalidValue.new(v, "must be an array")
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
def ==(other)
|
|
@@ -17,7 +17,7 @@ module StrongerParameters
|
|
|
17
17
|
def value(v)
|
|
18
18
|
return v if v < limit
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
InvalidValue.new(v, "must be less than #{limit}")
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
@@ -25,7 +25,7 @@ module StrongerParameters
|
|
|
25
25
|
def value(v)
|
|
26
26
|
return v if v <= limit
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
InvalidValue.new(v, "must be less than or equal to #{limit}")
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
|
@@ -33,7 +33,7 @@ module StrongerParameters
|
|
|
33
33
|
def value(v)
|
|
34
34
|
return v if v > limit
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
InvalidValue.new(v, "must be greater than #{limit}")
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
@@ -41,7 +41,7 @@ module StrongerParameters
|
|
|
41
41
|
def value(v)
|
|
42
42
|
return v if v >= limit
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
InvalidValue.new(v, "must be greater than or equal to #{limit}")
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'stronger_parameters/constraints'
|
|
2
|
+
|
|
3
|
+
module StrongerParameters
|
|
4
|
+
class DateTimeConstraint < Constraint
|
|
5
|
+
def value(v)
|
|
6
|
+
return v if v.is_a?(DateTime)
|
|
7
|
+
|
|
8
|
+
begin
|
|
9
|
+
DateTime.parse v
|
|
10
|
+
rescue ArgumentError
|
|
11
|
+
StrongerParameters::InvalidValue.new(v, "must be a date")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'stronger_parameters/constraints'
|
|
2
|
+
|
|
3
|
+
module StrongerParameters
|
|
4
|
+
class FloatConstraint < Constraint
|
|
5
|
+
def value(v)
|
|
6
|
+
if v.is_a?(Float)
|
|
7
|
+
return v
|
|
8
|
+
elsif v.is_a?(String) && v =~ /\A-?\d+\.\d+\Z/
|
|
9
|
+
return v.to_f
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
StrongerParameters::InvalidValue.new(v, "must be a float")
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'stronger_parameters/constraints'
|
|
2
|
+
|
|
3
|
+
module StrongerParameters
|
|
4
|
+
class NilStringConstraint < Constraint
|
|
5
|
+
NULL_VALUES = [nil, '', 'undefined']
|
|
6
|
+
|
|
7
|
+
def value(v)
|
|
8
|
+
if NULL_VALUES.include?(v)
|
|
9
|
+
nil
|
|
10
|
+
else
|
|
11
|
+
StrongerParameters::InvalidValue.new(v, "must be a nil string")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'stronger_parameters/constraints'
|
|
2
|
+
|
|
3
|
+
module StrongerParameters
|
|
4
|
+
class RegexpConstraint < Constraint
|
|
5
|
+
attr_reader :regexp
|
|
6
|
+
|
|
7
|
+
def initialize(regexp)
|
|
8
|
+
@regexp = regexp
|
|
9
|
+
@string = StringConstraint.new
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def value(v)
|
|
13
|
+
v = @string.value(v)
|
|
14
|
+
return v if v.is_a?(InvalidValue)
|
|
15
|
+
if v =~ regexp
|
|
16
|
+
v
|
|
17
|
+
else
|
|
18
|
+
InvalidValue.new(v, "must match #{regexp.source}")
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def ==(other)
|
|
23
|
+
super && regexp == other.regexp
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -11,13 +11,13 @@ module StrongerParameters
|
|
|
11
11
|
def value(v)
|
|
12
12
|
if v.is_a?(String)
|
|
13
13
|
if maximum_length && v.bytesize > maximum_length
|
|
14
|
-
|
|
14
|
+
return InvalidValue.new(v, "can not be longer than #{maximum_length} bytes")
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
return v
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
InvalidValue.new(v, 'must be a string')
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def ==(other)
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
module StrongerParameters
|
|
2
|
-
class
|
|
3
|
-
attr_accessor :
|
|
2
|
+
class InvalidValue
|
|
3
|
+
attr_accessor :value, :message
|
|
4
4
|
|
|
5
5
|
def initialize(value, message)
|
|
6
6
|
@value = value
|
|
7
7
|
@message = message
|
|
8
|
-
super(message)
|
|
9
8
|
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class InvalidParameter < StandardError
|
|
12
|
+
attr_accessor :key, :value
|
|
10
13
|
|
|
11
|
-
def
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"found invalid value. Value #{super}"
|
|
16
|
-
end
|
|
14
|
+
def initialize(invalid_value, key)
|
|
15
|
+
@value = invalid_value.value
|
|
16
|
+
@key = key
|
|
17
|
+
super(invalid_value.message)
|
|
17
18
|
end
|
|
18
19
|
end
|
|
19
20
|
end
|
|
@@ -16,6 +16,7 @@ module StrongerParameters
|
|
|
16
16
|
included do
|
|
17
17
|
alias_method_chain :hash_filter, :stronger_parameters
|
|
18
18
|
cattr_accessor :action_on_invalid_parameters, :instance_accessor => false
|
|
19
|
+
cattr_accessor :allow_nil_for_everything, :instance_accessor => false
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
module ClassMethods
|
|
@@ -23,10 +24,18 @@ module StrongerParameters
|
|
|
23
24
|
Constraint.new
|
|
24
25
|
end
|
|
25
26
|
|
|
27
|
+
def nil
|
|
28
|
+
NilConstraint.new
|
|
29
|
+
end
|
|
30
|
+
|
|
26
31
|
def string(options = {})
|
|
27
32
|
StringConstraint.new(options)
|
|
28
33
|
end
|
|
29
34
|
|
|
35
|
+
def regexp(regex)
|
|
36
|
+
RegexpConstraint.new(regex)
|
|
37
|
+
end
|
|
38
|
+
|
|
30
39
|
def integer
|
|
31
40
|
@integer ||= IntegerConstraint.new
|
|
32
41
|
end
|
|
@@ -48,19 +57,27 @@ module StrongerParameters
|
|
|
48
57
|
end
|
|
49
58
|
|
|
50
59
|
def integer32
|
|
51
|
-
integer &
|
|
60
|
+
integer & lt(2 ** 31) & gte(-2 ** 31)
|
|
52
61
|
end
|
|
53
62
|
|
|
54
63
|
def integer64
|
|
55
|
-
integer &
|
|
64
|
+
integer & lt(2 ** 63) & gte(-2 ** 63)
|
|
56
65
|
end
|
|
57
66
|
|
|
58
67
|
def id
|
|
59
|
-
integer &
|
|
68
|
+
integer & lt(2 ** 31) & gte(0)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def uid
|
|
72
|
+
integer & lt(2 ** 32) & gte(0)
|
|
60
73
|
end
|
|
61
74
|
|
|
62
75
|
def bigid
|
|
63
|
-
integer &
|
|
76
|
+
integer & lt(2 ** 63) & gte(0)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def ubigid
|
|
80
|
+
integer & lt(2 ** 64) & gte(0)
|
|
64
81
|
end
|
|
65
82
|
|
|
66
83
|
def enumeration(*allowed)
|
|
@@ -72,6 +89,10 @@ module StrongerParameters
|
|
|
72
89
|
BooleanConstraint.new
|
|
73
90
|
end
|
|
74
91
|
|
|
92
|
+
def float
|
|
93
|
+
FloatConstraint.new
|
|
94
|
+
end
|
|
95
|
+
|
|
75
96
|
def array(item_constraint)
|
|
76
97
|
ArrayConstraint.new(item_constraint)
|
|
77
98
|
end
|
|
@@ -79,6 +100,14 @@ module StrongerParameters
|
|
|
79
100
|
def map(constraints = nil)
|
|
80
101
|
HashConstraint.new(constraints)
|
|
81
102
|
end
|
|
103
|
+
|
|
104
|
+
def nil_string
|
|
105
|
+
NilStringConstraint.new
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def datetime
|
|
109
|
+
DateTimeConstraint.new
|
|
110
|
+
end
|
|
82
111
|
end
|
|
83
112
|
|
|
84
113
|
def hash_filter_with_stronger_parameters(params, filter)
|
|
@@ -96,27 +125,35 @@ module StrongerParameters
|
|
|
96
125
|
hash_filter_without_stronger_parameters(params, other_filter)
|
|
97
126
|
|
|
98
127
|
slice(*stronger_filter.keys).each do |key, value|
|
|
99
|
-
if value.nil?
|
|
128
|
+
if value.nil? && self.class.allow_nil_for_everything
|
|
100
129
|
params[key] = nil
|
|
101
130
|
next
|
|
102
131
|
end
|
|
103
132
|
|
|
104
133
|
constraint = stronger_filter[key]
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
rescue InvalidParameter => e
|
|
108
|
-
e.key = key
|
|
109
|
-
|
|
134
|
+
result = constraint.value(value)
|
|
135
|
+
if result.is_a?(InvalidValue)
|
|
110
136
|
name = "invalid_parameter.action_controller"
|
|
111
|
-
ActiveSupport::Notifications.publish(name, :key => key, :value => value, :message =>
|
|
137
|
+
ActiveSupport::Notifications.publish(name, :key => key, :value => value, :message => result.message)
|
|
138
|
+
|
|
139
|
+
action = self.class.action_on_invalid_parameters
|
|
140
|
+
case action
|
|
141
|
+
when :raise, nil
|
|
142
|
+
raise StrongerParameters::InvalidParameter.new(result, key)
|
|
143
|
+
when Proc
|
|
144
|
+
action.call(result, key)
|
|
145
|
+
when :log
|
|
146
|
+
Rails.logger.warn("#{key} #{result.message}, but was: #{value.inspect}")
|
|
147
|
+
else
|
|
148
|
+
raise ArgumentError, "Unsupported value in action_on_invalid_parameters: #{action}"
|
|
149
|
+
end
|
|
112
150
|
|
|
113
151
|
params[key] = value
|
|
114
|
-
|
|
115
|
-
|
|
152
|
+
else
|
|
153
|
+
params[key] = result
|
|
116
154
|
end
|
|
117
155
|
end
|
|
118
156
|
end
|
|
119
|
-
|
|
120
157
|
end
|
|
121
158
|
|
|
122
159
|
module ControllerSupport
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: stronger_parameters
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mick Staugaard
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -94,6 +94,20 @@ dependencies:
|
|
|
94
94
|
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: minitest-around
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
112
|
name: minitest-rg
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -122,6 +136,20 @@ dependencies:
|
|
|
122
136
|
- - ">="
|
|
123
137
|
- !ruby/object:Gem::Version
|
|
124
138
|
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: bump
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
125
153
|
- !ruby/object:Gem::Dependency
|
|
126
154
|
name: actionpack
|
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -149,13 +177,17 @@ files:
|
|
|
149
177
|
- lib/stronger_parameters/constraints/array_constraint.rb
|
|
150
178
|
- lib/stronger_parameters/constraints/boolean_constraint.rb
|
|
151
179
|
- lib/stronger_parameters/constraints/comparison_constraints.rb
|
|
180
|
+
- lib/stronger_parameters/constraints/date_time_constraint.rb
|
|
152
181
|
- lib/stronger_parameters/constraints/enumeration_constraint.rb
|
|
182
|
+
- lib/stronger_parameters/constraints/float_constraint.rb
|
|
153
183
|
- lib/stronger_parameters/constraints/hash_constraint.rb
|
|
154
184
|
- lib/stronger_parameters/constraints/integer_constraint.rb
|
|
185
|
+
- lib/stronger_parameters/constraints/nil_constraint.rb
|
|
186
|
+
- lib/stronger_parameters/constraints/nil_string_contraint.rb
|
|
187
|
+
- lib/stronger_parameters/constraints/regexp_constraint.rb
|
|
155
188
|
- lib/stronger_parameters/constraints/string_constraint.rb
|
|
156
189
|
- lib/stronger_parameters/errors.rb
|
|
157
190
|
- lib/stronger_parameters/parameters.rb
|
|
158
|
-
- lib/stronger_parameters/railtie.rb
|
|
159
191
|
- lib/stronger_parameters/version.rb
|
|
160
192
|
homepage: https://github.com/zendesk/stronger_parameters
|
|
161
193
|
licenses:
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
require 'rails/railtie'
|
|
2
|
-
|
|
3
|
-
module StrongParameters
|
|
4
|
-
class Railtie < ::Rails::Railtie
|
|
5
|
-
initializer "stronger_parameters.config", :before => "action_controller.set_configs" do |app|
|
|
6
|
-
ActionController::Parameters.action_on_invalid_parameters = app.config.action_controller.delete(:action_on_invalid_parameters) do
|
|
7
|
-
(Rails.env.test? || Rails.env.development?) ? :log : false
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|