2012-01-03 13 views
6

Uso de carriles 3.0.3, que migraron una columna decimal en mi base utilizando la siguiente migración:¿Cómo usar el decimal con precisión y escala?

change_table :products do |t| 
    t.change :price, :decimal, :precision => 10, :scale => 2 
    # other code 
end 

La migración funciona bien, pero todavía pueden almacenar valor como 4,64564 donde se deben almacenar solamente 4,65

Además de eso, excepto en el archivo de migración que creé, schema.rb no contiene información acerca de la escala/precisión.

¿Por qué los rieles aceptan precisión/migración de escala para ignorarlo?

Respuesta

1

que tenían el mismo problema, por favor, mira eso lib: https://github.com/dmgr/dmg_decimal

con ella se puede utilizar en un modelo como el que:

def price= val 
    self[:price] = Dmg::Decimal.real(val, scale: 2, precision: 10).to_d if val.present? 
end 
1

usted debe tratar con

change_column :products, :price, :decimal, :precision => 10, :scale => 2 
Cuestiones relacionadas