class Parameters
Ruby on Rails 4.0.13
Since v4.0.13Action Controller Parameters
Allows to choose which attributes should be whitelisted for mass updating and thus prevent accidentally exposing that which shouldn’t be exposed. Provides two methods for this purpose: #require and #permit. The former is used to mark parameters as required. The latter is used to set the parameter as permitted and limit which attributes should be allowed for mass updating.
params = ActionController::Parameters.new({ person: { name: 'Francesco', age: 22, role: 'admin' } }) permitted = params.require(:person).permit(:name, :age) permitted # => {"name"=>"Francesco", "age"=>22} permitted.class # => ActionController::Parameters permitted.permitted? # => true Person.first.update!(permitted) # => #<Person id: 1, name: "Francesco", age: 22, role: "user">
It provides two options that controls the top-level behavior of new instances:
-
permit_all_parameters- If it’strue, all the parameters will be permitted by default. The default isfalse. -
action_on_unpermitted_parameters- Allow to control the behavior when parameters that are not explicitly permitted are found. The values can be:logto write a message on the logger or:raiseto raise ActionController::UnpermittedParameters exception. The default value is:login test and development environments,falseotherwise.
Examples:
params = ActionController::Parameters.new params.permitted? # => false ActionController::Parameters.permit_all_parameters = true params = ActionController::Parameters.new params.permitted? # => true params = ActionController::Parameters.new(a: "123", b: "456") params.permit(:c) # => {} ActionController::Parameters.action_on_unpermitted_parameters = :raise params = ActionController::Parameters.new(a: "123", b: "456") params.permit(:c) # => ActionController::UnpermittedParameters: found unpermitted keys: a, b
ActionController::Parameters is inherited from ActiveSupport::HashWithIndifferentAccess, this means that you can fetch values using either :key or "key".
params = ActionController::Parameters.new(key: 'value') params[:key] # => "value" params["key"] # => "value"
Inherits from
Constants
Methods (defined here)
Private methods
(11)
Implementation detail — not part of the public API.
Methods (inherited)
From ActiveSupport::HashWithIndifferentAccess (37)
- # []=
- # convert_key
- # convert_value
- # deep_stringify_keys
- # deep_stringify_keys!
- # deep_symbolize_keys
- # default
- # delete
- # dup
- # extractable_options?
- # fetch
- # has_key?
- # include?
- # key?
- # member?
- # merge
- # merge!
- # nested_under_indifferent_access
- # regular_update
- # regular_writer
- # reject
- # replace
- # reverse_merge
- # reverse_merge!
- # select
- # store
- # stringify_keys
- # stringify_keys!
- # symbolize_keys
- # to_hash
- # to_options!
- # update
- # values_at
- # with_indifferent_access
- self. []
- self. new
- self. new_from_hash_copying_default
From Hash (35)
- # assert_valid_keys
- # deep_dup
- # deep_merge
- # deep_merge!
- # deep_stringify_keys
- # deep_stringify_keys!
- # deep_symbolize_keys
- # deep_symbolize_keys!
- # deep_transform_keys
- # deep_transform_keys!
- # diff
- # except
- # except!
- # extract!
- # extractable_options?
- # nested_under_indifferent_access
- # reverse_merge
- # reverse_merge!
- # reverse_update
- # slice
- # slice!
- # stringify_keys
- # stringify_keys!
- # symbolize_keys
- # symbolize_keys!
- # to_options
- # to_options!
- # to_param
- # to_query
- # to_xml
- # transform_keys
- # transform_keys!
- # with_indifferent_access
- self. from_trusted_xml
- self. from_xml
From Object (20)
- # acts_like?
- # blank?
- # create_fixtures
- # deep_dup
- # destroy
- # duplicable?
- # html_safe?
- # in?
- # instance_values
- # instance_variable_names
- # presence
- # present?
- # to_json
- # to_param
- # to_query
- # try
- # try!
- # unescape
- # with_options
- self. table_name_prefix