#ruby #ruby-on-rails-3
#ruby #ruby-on-rails-3
Вопрос:
Есть ли способ УДАЛИТЬ эти две функции Ruby, переместив три строки, которые разделяют обе функции, в другую функцию?
def format_currency(number)
number_to_currency(number,
:unit => current_user.currency_unit,
:delimiter => current_user.currency_delimiter,
:separator => current_user.currency_separator,
:format => current_user.currency_format
)
end
def format_currency_for_pdf(number, invoice)
number_to_currency(number / invoice.exchange_rate,
:unit => CURRENCIES[invoice.currency]
:delimiter => current_user.currency_delimiter,
:separator => current_user.currency_separator,
:format => current_user.currency_format
)
end
Спасибо за любую помощь?
Комментарии:
1. вы можете объединить хэш в другую, если это того стоит.
Ответ №1:
Как предполагает Таро, это будет:
def format_currency(number)
number_to_currency(number,
currency_hash(current_user.currency_unit)
)
end
def format_currency_for_pdf(number, invoice)
number_to_currency(number / invoice.exchange_rate,
currency_hash(CURRENCIES[invoice.currency])
)
end
def currency_hash unit
{
:unit => unit,
:delimiter => current_user.currency_delimiter,
:separator => current_user.currency_separator,
:format => current_user.currency_format
}
end
Ответ №2:
def format_currency(number)
number_to_currency(number,
currency_hash(current_user.currency_unit)
)
end
def format_currency_for_pdf(number, invoice)
number_to_currency(number / invoice.exchange_rate,
currency_hash(CURRENCIES[invoice.currency])
)
end
def currency_hash(unit)
{
:unit => unit,
:delimiter => current_user.currency_delimiter,
:separator => current_user.currency_separator,
:format => current_user.currency_format
}
end
Комментарии:
1. ахаха, то же самое решение, даже название метода.
2. Спасибо, что указали на это. Я думал о другом решении, передав format, но в итоге получил другое решение и забыл удалить format
3. Большое спасибо вам обоим. Я бросил монетку, а затем отметил ответ зише как правильный.