Доступны несколько вариантов.
Во всех случаях вам необходимо знать, в какой валюте вводится значение в , если , то оно вводится в формате, отличном отвалюта по умолчанию, определенная в Money.default_currency
.
1) Использовать новый метод доступа compined_of #cash
.
<%= f.number_field :cash %>
примечание: метод f.number_field создает счетчик чисел, а не текстовое поле.
2) Перегрузить определение #amount
.Обратите внимание, что я думаю, что этот метод сводит на нет необходимость в макросе mixed_of.
def amount
cents = read_attribute(:amount) || 0
currency = read_attribute(:currency_as_string) || Money.default_currency
Money.new(cents, currency)
end
def amount=(value)
cash = Money.from_string(value)
write_attribute(:amount, cash.cents)
end
Посмотрите на методы класса Money.from_ * в документации , в частности, посмотритеa метод Money.from_string
[ссылка] .