Class: ActionController::Parameters
- Inherits:
-
HashWithIndifferentAccess
- Object
- HashWithIndifferentAccess
- ActionController::Parameters
- Defined in:
- lib/action_controller/parameters.rb
Constant Summary collapse
- NEVER_UNPERMITTED_PARAMS =
Never raise an UnpermittedParameters exception because of these params are present. They are added by Rails and it’s of no concern.
%w( controller action )
Instance Attribute Summary collapse
-
#permitted ⇒ Object
(also: #permitted?)
Returns the value of attribute permitted.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #dup ⇒ Object
- #fetch(key, *args) ⇒ Object
-
#initialize(attributes = nil) ⇒ Parameters
constructor
A new instance of Parameters.
- #permit(*filters) ⇒ Object
- #permit! ⇒ Object
- #require(key) ⇒ Object (also: #required)
- #slice(*keys) ⇒ Object
Constructor Details
#initialize(attributes = nil) ⇒ Parameters
Returns a new instance of Parameters.
33 34 35 36 |
# File 'lib/action_controller/parameters.rb', line 33 def initialize(attributes = nil) super(attributes) @permitted = false end |
Instance Attribute Details
#permitted ⇒ Object Also known as: permitted?
Returns the value of attribute permitted.
24 25 26 |
# File 'lib/action_controller/parameters.rb', line 24 def permitted @permitted end |
Instance Method Details
#[](key) ⇒ Object
85 86 87 |
# File 'lib/action_controller/parameters.rb', line 85 def [](key) convert_hashes_to_parameters(key, super) end |
#dup ⇒ Object
101 102 103 104 105 |
# File 'lib/action_controller/parameters.rb', line 101 def dup duplicate = Parameters.new(self) duplicate.instance_variable_set :@permitted, @permitted duplicate end |
#fetch(key, *args) ⇒ Object
89 90 91 92 93 |
# File 'lib/action_controller/parameters.rb', line 89 def fetch(key, *args) convert_hashes_to_parameters(key, super) rescue KeyError, IndexError raise ActionController::ParameterMissing.new(key) end |
#permit(*filters) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/action_controller/parameters.rb', line 54 def permit(*filters) params = self.class.new filters.each do |filter| case filter when Symbol, String then params[filter] = self[filter] if has_key?(filter) keys.grep(/\A#{Regexp.escape(filter.to_s)}\(\d+[if]?\)\z/).each { |key| params[key] = self[key] } when Hash then self.slice(*filter.keys).each do |key, value| return unless value key = key.to_sym params[key] = each_element(value) do |value| # filters are a Hash, so we expect value to be a Hash too next if filter.is_a?(Hash) && !value.is_a?(Hash) value = self.class.new(value) if !value.respond_to?(:permit) value.permit(*Array.wrap(filter[key])) end end end end unpermitted_parameters!(params) if self.class.action_on_unpermitted_parameters params.permit! end |
#permit! ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/action_controller/parameters.rb', line 38 def permit! each_pair do |key, value| convert_hashes_to_parameters(key, value) self[key].permit! if self[key].respond_to? :permit! end @permitted = true self end |
#require(key) ⇒ Object Also known as: required
48 49 50 |
# File 'lib/action_controller/parameters.rb', line 48 def require(key) self[key].presence || raise(ActionController::ParameterMissing.new(key)) end |
#slice(*keys) ⇒ Object
95 96 97 98 99 |
# File 'lib/action_controller/parameters.rb', line 95 def slice(*keys) self.class.new(super).tap do |new_instance| new_instance.instance_variable_set :@permitted, @permitted end end |