在Rails + MySQL中存储一个百分比

Cha*_*d M 7 mysql ruby-on-rails

我需要在我的Rails应用程序中使用一个百分比.在任何视图中,包括用户输入的时间,格式都需要为数百种格式100.000.当它用于计算时,它需要以百分之一格式表示,1.00000.

我的迁移(我将列添加到现有表中)具有以下行:

add_column :worker, :cash_split, :decimal, :precision => 6, :scale => 5
Run Code Online (Sandbox Code Playgroud)

所以,截至目前,我正在以百分之一(1.00000)格式存储它.我选择以这种格式存储它的基础是,worker.cash_split / 100.0.to_d当我需要进行乘法时,我认为它将意味着更清晰的业务逻辑(即没有代码挂起).

我唯一的另一个想法是滥用compos_of方法.我可以将数据以数百(100.000)格式存储为cash_split,然后创建一个以1.0000格式cash_split_percentage返回的属性访问器cash_split.

Lar*_*y K 6

你的第一个想法是正确的......不要过度思考它.

您绝对应该以百分之一格式存储数据库中的百分比数字.并在所有Ruby计算中使用该格式.

百分比数字是显示惯例.例如,数字 0.45显示为45%.因此,使用View帮助程序将百分比数字从其内部格式(十进制数字)转换为您选择的显示格式 - 包含%符号的字符串.

  • 你会如何处理表格中的百分比?用户希望输入45%,但应存储为0.45.然而,如果用户输入错误的另一个字段并重新渲染表单,则百分比字段应为45而不是0.45.有了这个,我想说回调可能不是最终的解决方案. (2认同)