Espero no haber entendido mal el significado de "pato escribiendo", pero por lo que he leído, significa que debería escribir código en función de cómo responde un objeto a los métodos en lugar de qué tipo/clase es.¿Podría mejorar este método con el tipado de pato?
Aquí está el código:
def convert_hash(hash)
if hash.keys.all? { |k| k.is_a?(Integer) }
return hash
elsif hash.keys.all? { |k| k.is_a?(Property) }
new_hash = {}
hash.each_pair {|k,v| new_hash[k.id] = v}
return new_hash
else
raise "Custom attribute keys should be ID's or Property objects"
end
end
Lo que quiero es para asegurarse de que termino con un hash donde las claves son un número entero que representa el ID de un objeto ActiveRecord. En particular, no me gusta tener que repetir las teclas hash dos veces con all?
para determinar si necesito extraer las identificaciones.
Por supuesto, voy a aceptar cualquier otra sugerencia para mejorar este código, así :)
oído nunca hablar de "duck typing" antes. ¿Dónde te encontraste con eso? –
@Brian, http://en.wikipedia.org/wiki/Duck_typing –