En regardant SO, je vois que le moyen préféré de la monnaie en utilisant RoR est d'utiliser decimal (8,2) et de les sortir en utilisant number_to_currency();Ruby on Rails - Monnaie: virgules provoquant un problème
Je peux obtenir mes numéros de la DB, mais je vais avoir des questions sur les obtenir dans
Dans mon action de mise à jour je la ligne suivante:.
if @non_labor_expense.update_attributes(params[:non_labor_expense])
puts YAML::dump(params)
La décharge de params montre la valeur correcte. xx, yyy.zz, mais ce qui est stocké dans la BD est seulement xx.00
Que dois-je faire pour tenir compte du fait qu'il peut y avoir des virgules et un utilisateur ne peut pas entrer .zz (les cents). Certains regex et pour la virgule? comment géreriez-vous la décimale si elle était .2 contre .20.
Il doit y avoir une version intégrée ou au moins une meilleure.
Ma migration (je ne sais pas si cela aide):
class ChangeExpenseToDec < ActiveRecord::Migration
def self.up
change_column :non_labor_expenses, :amount, :decimal, :precision => 8, :scale => 2
end
def self.down
change_column :non_labor_expenses, :amount, :integer
end
end
.2 et .20 sont les mêmes numbe r, donc peu importe comment vous le stockez, juste comment vous l'affichez. –
Droite. Le premier problème est que je perds les données après la virgule. Vous dites qu'une fois, je résous cela, le .2 et .20 va se résoudre sur la façon dont il est stocké dans la base de données? – easement
Voir ma réponse; Fondamentalement, vous stockez le nombre dans la base de données en tant que nombre décimal droit (non formaté), puis le formater comme vous le souhaitez lorsque vous avez besoin de l'afficher. –