为什么Module.sum(:field)的结果是整数?

时间:2011-01-21 09:07:30

标签: 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

但在我的情况下,'point'的类型是数字(5,2) 这不是漂浮物吗?

1 个答案:

答案 0 :(得分:3)

我对SQLite并不是特别熟悉,但我认为你应该在create table语句中使用DECIMAL类型。更多细节:

Active Record SQLite Type Mapping
SQLite Types

但请注意this issue。似乎sqlite3 ruby​​驱动程序坚持为DECIMAL查询结果创建Float ruby​​对象而不是BigDecimal。