我正在构建一个Rails应用程序,该应用程序允许用户通过向UI中输入值来编目轮胎。当我创建了tire
类,我把它作为我不确定我是否正确应用Rails更改迁移
class CreateArticles < ActiveRecord::Migration[5.0]
def change
create_table :tires do |t|
t.decimal :price
...
end
end
当我跑我才发现自己忘了指定decimal
属性的精确度和规模的计划。这导致该程序是无法接受非整数值和因为我是如此的程序更远的地方显示的.0
附加的所有值,我决定写另一个移民通过编写以下迁移只是改变price
到float
:
class ChangeTiresToFloat < ActiveRecord::Migration[5.0]
def change
change_column :tires, :price, :float
end
运行db:migrate
后,程序的行为没有变化。这是否应该使UI可以接受浮点值?
编辑:诉诸使得price
列的浮点值之前,我曾尝试用这种迁移添加缺少的属性来解决decimal
值:
class MoneyDecimalFix < ActiveRecord::Migration[5.0]
def change
change_column :tires, :price, :decimal, :precision => 8, :scale => 2
end
end
滚滚向前迁移,程序的行为后,仍然没有改变。
不要使用浮动价格。 http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency – max
与@Max你可以使用一个钱库像https://github.com/RubyMoney同意/ money-rails –
尽管我打算在此之后切换到优化更新的Money库,但我首先想知道我的错误在实施迁移中。为什么将它向前滚动会导致程序行为不变。 –