push is_a checks up the stack
now `hash_filter` doesn't need to know about the `Parameters` class
This commit is contained in:
parent
7779e63371
commit
e956172b8b
@ -566,20 +566,22 @@ def convert_value_to_parameters(value)
|
||||
end
|
||||
|
||||
def each_element(object)
|
||||
if object.is_a?(Array)
|
||||
object.map { |el| yield el }.compact
|
||||
elsif fields_for_style?(object)
|
||||
hash = object.class.new
|
||||
object.each { |k,v| hash[k] = yield v }
|
||||
hash
|
||||
else
|
||||
yield object
|
||||
case object
|
||||
when Array
|
||||
object.grep(Parameters).map { |el| yield el }.compact
|
||||
when Parameters
|
||||
if fields_for_style?(object)
|
||||
hash = object.class.new
|
||||
object.each { |k,v| hash[k] = yield v }
|
||||
hash
|
||||
else
|
||||
yield object
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def fields_for_style?(object)
|
||||
object.is_a?(Parameters) &&
|
||||
object.to_unsafe_h.all? { |k, v| k =~ /\A-?\d+\z/ && v.is_a?(Hash) }
|
||||
object.to_unsafe_h.all? { |k, v| k =~ /\A-?\d+\z/ && v.is_a?(Hash) }
|
||||
end
|
||||
|
||||
def unpermitted_parameters!(params)
|
||||
@ -665,9 +667,7 @@ def hash_filter(params, filter)
|
||||
else
|
||||
# Declaration { user: :name } or { user: [:name, :age, { address: ... }] }.
|
||||
params[key] = each_element(value) do |element|
|
||||
if element.is_a?(Parameters)
|
||||
element.permit(*Array.wrap(filter[key]))
|
||||
end
|
||||
element.permit(*Array.wrap(filter[key]))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user