mysql - 在 Rails + MySQL 中存储百分比

标签 mysql ruby-on-rails

我需要在我的 Rails 应用程序中使用百分比。在任何 View 中,包括用户输入时,格式都需要是百位格式,100.000。用于计算时,需要用百分位表示,1.00000

我的迁移(我正在将列添加到现有表中)包含以下行:

add_column :worker, :cash_split, :decimal, :precision => 6, :scale => 5

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

我唯一的其他想法可能是滥用 composed_of 方法。我可以将数据以数百 (100.000) 格式存储为 cash_split,然后制作一个属性访问器 cash_split_percentage 以其对应的 1.0000 格式返回 cash_split .

最佳答案

您的第一个想法是正确的……不要想太多。

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

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

关于mysql - 在 Rails + MySQL 中存储百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8203268/

相关文章:

ruby-on-rails - 在 Intranet/LAN 上部署 Production Rails 应用程序

mysql - 如何使用连接表中的rails将csv插入mysql?

mysql - 如何自定义MySql Connector/net?

php - 如何从 php 函数中获取值(MySQL 查询)

javascript - 具有 2 个操作的提交按钮取决于下拉菜单

ruby-on-rails - Devise 在生产环境中不发送邮件

MySQL 两列上的索引

php - Mysql选择具有最小和最大数据的行中的间隙

ruby-on-rails - 本周的范围日期属性?

ruby-on-rails - 通过 =yield 在部分内呈现内容