params_cleaner 0.1.2 → 0.2.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.
- data/lib/params_cleaner.rb +36 -9
- metadata +6 -6
data/lib/params_cleaner.rb
CHANGED
@@ -5,15 +5,14 @@ require "active_support/hash_with_indifferent_access"
|
|
5
5
|
module ParamsCleaner
|
6
6
|
extend ActiveSupport::Concern
|
7
7
|
|
8
|
-
VERSION = "0.
|
8
|
+
VERSION = "0.2.0"
|
9
9
|
|
10
|
-
def clean_params(root_params = params)
|
10
|
+
def clean_params(root_params = params, top_level = true)
|
11
11
|
cleaned_params = root_params.map do |key, val|
|
12
12
|
if val.kind_of?(Hash)
|
13
|
-
|
14
|
-
[key, clean_values]
|
13
|
+
_clean_hash(key, val)
|
15
14
|
else
|
16
|
-
|
15
|
+
_clean_value(key, val, top_level)
|
17
16
|
end
|
18
17
|
end
|
19
18
|
|
@@ -21,13 +20,41 @@ module ParamsCleaner
|
|
21
20
|
HashWithIndifferentAccess.new(cleaned_params_hash)
|
22
21
|
end
|
23
22
|
|
23
|
+
def _clean_hash(key, value)
|
24
|
+
allowed_keys = value.slice(*self.class._allowed_nested[key.to_sym])
|
25
|
+
clean_values = clean_params(allowed_keys, false)
|
26
|
+
[key, clean_values]
|
27
|
+
end
|
28
|
+
|
29
|
+
def _clean_value(key, value, top_level)
|
30
|
+
return [key, value] unless top_level
|
31
|
+
|
32
|
+
if self.class._allowed_top_level.include?(key)
|
33
|
+
[key, value]
|
34
|
+
else
|
35
|
+
[]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
24
39
|
module ClassMethods
|
25
|
-
def allowed_params(
|
26
|
-
@
|
40
|
+
def allowed_params(*params_groups)
|
41
|
+
@allowed_top_level = []
|
42
|
+
|
43
|
+
params_groups.each do |params_group|
|
44
|
+
if params_group.is_a?(Hash)
|
45
|
+
@allowed_nested = params_group
|
46
|
+
else
|
47
|
+
@allowed_top_level << params_group
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def _allowed_nested
|
53
|
+
@allowed_nested
|
27
54
|
end
|
28
55
|
|
29
|
-
def
|
30
|
-
@
|
56
|
+
def _allowed_top_level
|
57
|
+
@allowed_top_level
|
31
58
|
end
|
32
59
|
end
|
33
60
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: params_cleaner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70105385011580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70105385011580
|
25
25
|
description: Rails mass assignment protection in the controller
|
26
26
|
email:
|
27
27
|
- drew@drewolson.org
|
@@ -44,7 +44,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
44
44
|
version: '0'
|
45
45
|
segments:
|
46
46
|
- 0
|
47
|
-
hash:
|
47
|
+
hash: 1896846872677650813
|
48
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
53
|
version: '0'
|
54
54
|
segments:
|
55
55
|
- 0
|
56
|
-
hash:
|
56
|
+
hash: 1896846872677650813
|
57
57
|
requirements: []
|
58
58
|
rubyforge_project:
|
59
59
|
rubygems_version: 1.8.15
|