1

金額を整数 (セント) としてデータベースに格納し、ビュー側でフォーマットしています。ただし、ユーザーが「175,000」などを入力すると、DB に格納される値は「175」になります。最初のコンマで停止し、残りのゼロを保存していないようです。正規表現がゼロ以外または 10 進数の値を適切に選択し、数値だけを残すことを (ルビュラーで) 確認しました。最初のコンマで停止し続ける理由がわかりません。

# model
before_save :convert_amounts_to_cents

def convert_amounts_to_cents
  self.loan_amount = loan_amount.to_s.gsub(/[^0-9\.]/, "").to_i
end
4

2 に答える 2

0

これは古いActiveModel機能であり、値を設定すると渡された値を整数に変換するためbefore_save、この場合は遅すぎます。

オーバーライドしてみてくださいloan_amount=

def amount=(amount)
  self[:amount] = amount.to_s.gsub(/[^0-9\.]/, "").to_i
end
于 2013-01-05T14:55:47.800 に答える
0

実際、保存すると 175 と 175.00 は同じように表されます。右端の 00 は暗黙的です。

ただし、ユーザーに情報を表示するときは、適切なフォーマットで 10 進数の桁数を選択できます。

于 2013-01-05T14:44:16.117 に答える