Ruby no tiene realmente argumentos de palabra clave. Raíles está explotando una característica de rubí que le permite omitir las llaves alrededor de un hash. Por ejemplo, con find
, lo que realmente estamos pidiendo es:
Pero si el hash es el último argumento del método, se puede dejar de lado los apoyos y todavía será tratado como un hash:
Person.find(:all, :conditions => "...", :offset => 10, :limit => 10)
Usted puede utilizar esto en sus propios métodos:
def explode(options={})
defaults = { :message => "Kabloooie!", :timer => 10, :count => 1 }
options = defaults.merge(options)
options[:count].times do
sleep options[:timer]
puts options[:message]
end
end
Y luego llamarlo:
explode :message => "Meh.", :count => 3
O llame sin un argumento, lo que resulta en todos los valores por defecto que se utiliza:
explode
Son no argumentos de palabra clave. En su lugar, puede ver el código fuente de los métodos que toman estos argumentos para descubrir cómo implementar esta técnica. Eche un vistazo a la documentación de 'ActiveRecord :: Base.find' (http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002263) para obtener ideas. – yfeldblum