number_to_currency
приятно, но может дорого обойтись; Возможно, вы захотите сделать свой собственный бросок, если вам нужно часто это называть.
Вы должны знать, что использование плавающей запятой для хранения валюты может быть проблематичным ( и см. ), если вы выполняете много расчетов на основе этих значений. Одним из решений является использование целых чисел для валюты и подсчета центов. Похоже, что это подход, используемый плагин денег . Другое решение заключается в использовании типа decimal
в вашей миграции, который должен работать «из коробки» для современных версий Rails (> 1.2):
add_column :items, :price, :decimal, :precision => 10, :scale => 2
(:scale
- это число знаков после запятой, :precision
- общее количество цифр.) Это даст вам BigDecimal объектов в Rails, с которыми немного сложнее работать , но не так уж и плохо.
И целочисленный, и десятичный подходы немного медленнее, чем с плавающей запятой. В некоторых местах я использую плавающие числа для валюты, потому что я знаю, что мне не нужно делать вычисления для значений в Rails, только хранить и отображать их. Но если вам нужны точные расчеты валюты, не используйте поплавки.