我正在使用rails教程,并遇到了这一行rails g model product name decimal:{7, 2}
。
最后那些花括号是什么意思?他们做了什么?
最初,我认为他们用浮点数强制一定程度的精度,但事实证明这是错误的。我可以制作一个10位十进制数,小数点到千分之一。
答案 0 :(得分:1)
请参阅例如: - http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html
它说:
为清楚起见:precision是有效位数, 而标度是可以存储的数字位数 小数点。例如,数字123.45的精度为5 精度为5的小数,精度为5,小数为2 范围从-999.99到999.99。
答案 1 :(得分:1)
这是十进制字段的精度(总位数)和 scale (小数点后的数字)。
来自rails g model -h
:
For decimal two integers separated by a comma in curly braces will be used for precision and scale: `rails generate model product price:decimal{10,2}`
来自MySQL docs:
DECIMAL
列的声明语法为DECIMAL(M,D)
。该 MySQL 5.1中参数的值范围如下:
M
是最大位数(精度)。它的范围是1 (较早版本的MySQL允许范围为1到254.)
D
是小数点右边的位数( 规模)。它的范围为0到30,且不得大于M
。