Module: ActiveParams::Parser
Instance Method Summary collapse
-
#combine_hashes(array_of_hashes) ⇒ Object
to obtain a hash of all possible keys.
- #strong_params_definition_for(params) ⇒ Object
Instance Method Details
#combine_hashes(array_of_hashes) ⇒ Object
to obtain a hash of all possible keys
4 5 6 7 |
# File 'lib/active_params/parser.rb', line 4 def combine_hashes(array_of_hashes) array_of_hashes.select {|v| v.kind_of?(Hash) }. inject({}) {|sum, hash| hash.inject(sum) {|sum,(k,v)| sum.merge(k => v) } } end |
#strong_params_definition_for(params) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/active_params/parser.rb', line 9 def strong_params_definition_for(params) if params.kind_of?(Array) combined_hash = combine_hashes(params) if combined_hash.empty? [] else strong_params_definition_for(combined_hash) end elsif params.respond_to?(:keys) # Hash, ActionController::Parameters values, arrays = [[], {}] params.each do |key, value| case value when Array arrays[key] = strong_params_definition_for(value) when Hash arrays[key] = strong_params_definition_for(combine_hashes(value.values)) else values.push(key) end end if arrays.empty? values else [*values.sort, arrays] end else params end end |