Установка точности по умолчанию для всех десятичных чисел в рельсах - PullRequest
1 голос
/ 19 января 2011

Есть ли способ заставить Rails выводить все десятичные числа с определенной точностью?Все десятичные поля в моей базе данных являются суммами в валюте, поэтому я хотел бы, чтобы десятичные числа отображались по умолчанию с точностью до 2 (то есть 2,40).Я знаю, что могу использовать вспомогательную функцию, такую ​​как «number_to_currency», чтобы сделать это для каждого отдельного номера, но это кажется немного утомительным и ненужным.

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Если вас беспокоит переопределение «to_s» на Float с возможными непредвиденными побочными эффектами, ваша следующая лучшая ставка, вероятно, просто создать новый метод, но все же в качестве основного расширения.Примерно так:

class Float
    def c
        sprintf('%.2f', self)
    end
end

Тогда не может быть никаких непредвиденных последствий, и тогда, где бы вы ни захотели отобразить число с двумя десятичными разрядами, вы просто позвоните .c.Например:

message = "The account balance is $#{amount.c}."

Не автоматический, но не слишком много дополнительной печати, и никаких возможных побочных эффектов, которые может вызвать переопределение to_s.

0 голосов
/ 19 января 2011

Что ж, если вы не возражаете против того, чтобы обезьяна вносила исправления в ruby, вы можете добавить что-то вроде этого (поместите его в инициализатор по адресу "/config/initializers/core_extensions.rb"):

class Float
    def to_s
        sprintf('%.2f', self)
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...