Module: ActionArgs::ParamsHandler
- Defined in:
- lib/action_args/params_handler.rb
Class Method Summary collapse
-
.extract_method_arguments_from_params(method_parameters, params) ⇒ Object
converts the request params Hash into an Array to be passed into the target Method.
-
.strengthen_params!(controller_class, method_parameters, params) ⇒ Object
permits declared model attributes in the params Hash note that this method mutates the given params Hash.
Class Method Details
.extract_method_arguments_from_params(method_parameters, params) ⇒ Object
converts the request params Hash into an Array to be passed into the target Method
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/action_args/params_handler.rb', line 4 def self.extract_method_arguments_from_params(method_parameters, params) kwargs = {} parameter_names = method_parameters.map(&:last) method_parameters.reverse_each do |type, key| case type when :req next when :key kwargs[key] = params[key] if params.has_key? key when :opt break if params.has_key? key end # omitting parameters that are :block, :rest, :opt without a param, and :key without a param parameter_names.delete key end values = parameter_names.map {|k| params[k]} values << kwargs if kwargs.any? values end |
.strengthen_params!(controller_class, method_parameters, params) ⇒ Object
permits declared model attributes in the params Hash note that this method mutates the given params Hash
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/action_args/params_handler.rb', line 27 def self.strengthen_params!(controller_class, method_parameters, params) target_model_name = (controller_class.instance_variable_get(:'@permitting_model_name') || controller_class.name.sub(/.+::/, '').sub(/Controller$/, '')).singularize.underscore.to_sym permitted_attributes = controller_class.instance_variable_get :'@permitted_attributes' method_parameters.each do |type, key| if (key == target_model_name) && permitted_attributes params[key] = params.require(key).try :permit, *permitted_attributes end end end |