ruby-on-rails - 为什么 Module.sum( :field) is integer?

标签 ruby-on-rails ruby

create table test_tables (
id number(38) primary key,
name varchar2(50),
age number(5),
gender varchar2(10),
point number(5,2)
);
insert into test_tables values (1,'name1',20,'male',80.5);
insert into test_tables values (2,'name2',21,'female',60.5);
insert into test_tables values (3,'name3',23,'male',90.5);
insert into test_tables values (4,'name4',19,'male',79.5);
insert into test_tables values (5,'name5',18,'female',80.5);

TestTable.sum(:point)的结果是391,
为什么不是 391.5?
我检查了 rdoc,有一些描述:

The value is returned with the same data type of the column

但在我的例子中,“点”的类型是数字 (5,2)。
这不是花车吗?

最佳答案

我不是特别熟悉 SQLite,但我认为您应该在创建表语句中使用 DECIMAL 类型。更多详情:

Active Record SQLite Type Mapping
SQLite Types

小心this issue尽管。似乎 sqlite3 ruby​​ 驱动程序坚持为 DECIMAL 查询结果创建 Float ruby​​ 对象而不是 BigDecimal。

关于ruby-on-rails - 为什么 Module.sum( :field) is integer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4757046/

相关文章:

ruby-on-rails - Rails : migrating production database, 需要为每个现有用户创建新数据

ruby-on-rails - Rails 如何为heroku 上的rake 任务创建后台任务?

ruby-on-rails - 如何启动 rails 控制台并专门使用测试数据库?

ruby-on-rails - HABTM,或多个belongs_to?

Ruby 和 uniq 方法

ruby-on-rails - 如何通过接受嵌套属性的关联为多对多创建新记录?

ruby - 将类方法保存到 txt 中时出现问题

ruby - 从 git 提交生成发行说明

ruby-on-rails - config/environments/development.rb 中 "consider_all_requests_local"的用途?

ruby-on-rails - Rails ActionText 没有为文本输入框和上传的附件呈现样式