Va una pregunta fácil, disculpen la trivialidad.
Quiero extender la clase 'float ’ para agregarle un metodo ‘to_money’
para mostrar el contenido de un float ya formateado como dinero
Ej.
f = 1000.3
f.to_money(’$’)
$1,000.30
De esta manera podré poner en la vista
<%= @client.balance.to_money %>
lo prefiero a usar un helper
<%= to_money(@client.balance) %>
El codigo de to_money ya lo tengo escrito, lo que no se es como y donde
extender la clase float.
Mi app no es ni financiera ni contable asi que no me preocupo por los
redondeos de float, todos las sumas salen de queries como
select sum(monto) as suma
from transacciones
where …
Creo (no puedo confirmarlo ahora mismo) que cualquier fichero .rb que
sueltes
en lib/ será evaluado automáticamente, asà que ese parece un buen lugar.
También recordá que existe el helper number_to_currency.
(no sé si es 100% correcto extender la clase por un tema de
presentación… pero bueno, ActiveSupport extiende Array para ponerle
to_sentence y es lo más cómodo que existe)
Uno nunca extiende clases por temas de presentacion, lo hace por
temas de programacion… y de estetica y sensibilidad y comodidad y
hasta por flojera.
Ahora, donde puede haber equivocacion es que cual clase extender.
En este caso en particular, creo que extender Float es ser demasiado
especifico. Porque no hacerlo en Numeric? y asi incluir a los pobres
enteros que tambien tienen derechos?
También recordá que existe el helper number_to_currency.
Muy buen helper, es lo que yo digo, que el Rails fue hecho pensando en
todas las necesidades del desarrollo Web
(no sé si es 100% correcto extender la clase por un tema de
presentación…
Para serte sincero yo tampoco sé si es lo correcto, aunque me parece lo
más natural, los datos almacenados en formato binario no nos sirve de
nada a nosotros los humanos, habría que esperar si en la siguiente
revolución tecnológica nos conectan un decodificador binario en nuestra
corteza cerebral, así la capa de presentación será cosa del pasado. Para
mi es claro que un objecto tenga un interface público para mostar su
contenido en un modo legible por nosotros.
En este caso en particular, creo que extender Float es ser demasiado
especifico. Porque no hacerlo en Numeric? y asi incluir a los pobres
enteros que tambien tienen derechos?
No lo consideré necesario, “to_s” ya hace un buen trabajo
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.