Class: ActionController::Parameters

Inherits:
Object
  • Object
show all
Defined in:
lib/belt/parameters.rb

Instance Method Summary collapse

Constructor Details

#initialize(params = {}, permitted = false) ⇒ Parameters

Returns a new instance of Parameters.



28
29
30
31
# File 'lib/belt/parameters.rb', line 28

def initialize(params = {}, permitted = false)
  @params = normalize_keys(params)
  @permitted = permitted
end

Instance Method Details

#[](key) ⇒ Object



33
34
35
# File 'lib/belt/parameters.rb', line 33

def [](key)
  @params[key.to_s]
end

#any?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/belt/parameters.rb', line 61

def any?
  @params.any?
end

#eachObject



53
54
55
# File 'lib/belt/parameters.rb', line 53

def each(&)
  @params.each(&)
end

#empty?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/belt/parameters.rb', line 57

def empty?
  @params.empty?
end

#except(*keys) ⇒ Object



116
117
118
# File 'lib/belt/parameters.rb', line 116

def except(*keys)
  Parameters.new(@params.except(*keys.map(&:to_s)), @permitted)
end

#fetch(key) ⇒ Object



37
38
39
# File 'lib/belt/parameters.rb', line 37

def fetch(key, *, &)
  @params.fetch(key.to_s, *, &)
end

#key?(key) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/belt/parameters.rb', line 41

def key?(key)
  @params.key?(key.to_s)
end

#keysObject



45
46
47
# File 'lib/belt/parameters.rb', line 45

def keys
  @params.keys
end

#merge(other) ⇒ Object



107
108
109
110
# File 'lib/belt/parameters.rb', line 107

def merge(other)
  other_hash = other.is_a?(Parameters) ? other.to_unsafe_h : other
  Parameters.new(@params.merge(normalize_keys(other_hash)), @permitted)
end

#permit(*filters) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/belt/parameters.rb', line 72

def permit(*filters)
  permitted_params = {}

  filters.each do |filter|
    case filter
    when Symbol, String
      key = filter.to_s
      permitted_params[key] = @params[key] if @params.key?(key)
    when Hash
      filter.each do |key, nested_filter|
        key = key.to_s
        next unless @params.key?(key)

        permitted_params[key] = permit_nested(@params[key], nested_filter)
      end
    end
  end

  Parameters.new(permitted_params, true)
end

#permitted?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/belt/parameters.rb', line 93

def permitted?
  @permitted
end

#require(key) ⇒ Object

Raises:



65
66
67
68
69
70
# File 'lib/belt/parameters.rb', line 65

def require(key)
  value = @params[key.to_s]
  raise ParameterMissing, key if value.nil? || (value.respond_to?(:empty?) && value.empty?)

  value.is_a?(Hash) ? Parameters.new(value) : value
end

#slice(*keys) ⇒ Object



112
113
114
# File 'lib/belt/parameters.rb', line 112

def slice(*keys)
  Parameters.new(@params.slice(*keys.map(&:to_s)), @permitted)
end

#to_hObject



97
98
99
100
101
# File 'lib/belt/parameters.rb', line 97

def to_h
  raise UnpermittedParameters, @params.keys unless @permitted

  deep_to_h(@params)
end

#to_unsafe_hObject



103
104
105
# File 'lib/belt/parameters.rb', line 103

def to_unsafe_h
  deep_to_h(@params)
end

#valuesObject



49
50
51
# File 'lib/belt/parameters.rb', line 49

def values
  @params.values
end