我正在構建一個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庫,但我首先想知道我的錯誤在實施遷移中。爲什麼將它向前滾動會導致程序行爲不變。 –