Necesito usar un porcentaje en mi aplicación Rails. En cualquier vista, incluso cuando el usuario la ingrese, el formato deberá ser el formato de cientos, 100.000
. Cuando se utiliza en los cálculos, debe representarse en el formato de centésimas, 1.00000
.Almacenar un porcentaje en Rails + MySQL
Mi migración (que estoy añadiendo la columna a una tabla existente) tiene la siguiente línea: formato
add_column :worker, :cash_split, :decimal, :precision => 6, :scale => 5
Así, a partir de ahora, estoy almacenándolo en las centésimas (1.00000
). Mi base para elegir almacenarlo en este formato es que supongo que significará una lógica de negocios más limpia (es decir, no hay un código worker.cash_split/100.0.to_d
pendiente) cuando deba multiplicar.
Mi único otro pensamiento fue quizás abusar del método de la compilación_of. Podría almacenar los datos en el formato de cientos (100.000
) como cash_split y luego hacer un atributo de acceso cash_split_percentage
que devuelve cash_split
en su contraparte de formato 1.0000.
¿Cómo manejaría los porcentajes en los formularios? Los usuarios querrán ingresarlo como un 45% pero se debe almacenar como 0.45. Sin embargo, si el usuario ingresa otro campo incorrecto y el formulario es rendido, el campo de porcentaje debería tener 45 y no 0.45. Con esto quiero decir que una devolución de llamada puede no ser la solución final. –
puede escribir getters y setters para el porcentaje en el formato de cientos. por lo que tendrá el atributo #some_ratio y los métodos #some_ration_percentage & # some_ration_percentage = que simplemente dividirán/multiplicarán por 100 y continuarán. – Emirikol