Je souhaite stocker des devises dans mes bases de données (sqlite et mysql). J'essaie d'utiliser le type de colonne decimal
, avec :scale => 2
.Comment configurer Rails pour générer des nombres décimaux avec la précision correcte dans les champs de formulaire?
Ceci ne se comporte pas comme prévu. Si j'enregistre un enregistrement avec :rate => 10.50
, il est stocké dans mon sqlite db sous la forme 10.5
. En outre, lorsque je génère la valeur dans un champ de formulaire, il est affiché comme 10.5
.
Je ne veux pas faire de mise en forme hacky chaîne chaque fois que je veux bien afficher les valeurs dans les formulaires Rails.
Existe-t-il un moyen de contourner ce problème? Est-ce une chose sqlite? Est-ce que je viens de mal comprendre le type de colonne decimal
?
Edit:
Pour clarifier les choses, je veux pouvoir utiliser si les méthodes de génération de forme habituelle:
- form_for @project do |f|
= f.text_field :rate
Si je dois formater explicitement la sortie, je vais devoir créer méthodes supplémentaires pour chaque attribut décimales:
def formatted_rate
"%.2f" % rate
end
= f.text_field :formatted_rate
Existe-t-il d'autres astuces communes pour forcer la mise en forme de sortie, et toujours utiliser la définition ault Rails formbuilder?
Il n'y a rien de «hacky» à propos du codage de vos vues pour afficher vos chiffres à deux décimales; C'est la solution idéale. Lorsque vous spécifiez une précision décimale, vous spécifiez un maximum et non un minimum. Les nombres ne seront jamais stockés avec des zéros de fin ou de début. – meagar
Bien que n'étant pas un doublon * exact *, ces réponses sont presque toutes applicables: http://stackoverflow.com/questions/591939/how-can-a-format-the-value-shown-in-a-rails-edit- field – meagar