jac*_*ter 6 ruby-on-rails ruby-on-rails-3
我正在使用Rails 3.0.3(不要问),当我运行带有十进制列的表的迁移并设置:default => 0时,它将列的比例和精度重新设置为(10,0).
def self.up
create_table :courses do |t|
t.integer :user_id
t.string :name
t.decimal :distance, :precision => 5, :scale => 2, :default => 0
t.text :notes
t.timestamps
end
end
Run Code Online (Sandbox Code Playgroud)
当我从迁移中删除:default => 0选项时,列的缩放和精度是正确的:(5,2)
我尝试仅使用:default =>:0 set运行change_column迁移,但是将列的比例和精度重新设置为(10,0)
change_column :courses, :distance, :decimal, :default => 0.0
Run Code Online (Sandbox Code Playgroud)
我知道我可以进入MySQL并更正列的精度和规模,但想知道我做错了什么或者这是一个错误?
谷歌没有透露任何信息,所以我认为我做错了什么.
我也被这个问题困扰了,找不到解决办法。最终我不得不进入 mysql 并更改所需的精度、小数位数和默认值,我从这里使用了它并进行了一些修改
mysql> ALTER TABLE question ADD (price INTEGER);
mysql> ALTER TABLE question DROP price;
mysql> ALTER TABLE question ADD (frig DECIMAL(5,2));
mysql> ALTER TABLE question CHANGE frig price DECIMAL(5,2);
mysql> ALTER TABLE question ALTER status SET DEFAULT '0';
mysql> ALTER TABLE question MODIFY price INTEGER;
Run Code Online (Sandbox Code Playgroud)
还可以尝试 :default => 0.0 #注意 0.0 作为默认值必须是指定的数据类型,即十进制
希望能帮助到你。