2017-03-08 38 views
1

這是我創建表遷移。請注意,我沒有提供price的默認值。在沒有默認值的列上使用change_column_default時,應該是「from」值?

class CreateProducts < ActiveRecord::Migration[5.0] 
    def change 
    create_table :products do |t| 
     t.string :name 
     t.decimal :price, precision: 8, scale: 2 

     t.timestamps 
    end 
    end 
end 

現在我想設置一個默認值。根據the Migration guide,我應該提供from使其可逆。我應該提供什麼價值?

class ChangeProductsPriceDefault < ActiveRecord::Migration[5.0] 
    def change 
    change_column_default :products, :price, from: 'WHAT_TO_WRITE_HERE?', to: 0 
    end 
end 
+1

寫的:無@wit。 – Saran

回答

4

「無默認」 是指默認爲NULL,所以:

change_column_default :products, :price, from: nil, to: 0 

有一個關於零爲默認描述:http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-change_column_default

+0

我很想使用'null'。你能再告訴我爲什麼它是'零',而不是'空'? – Wit

+1

'null'僅在SQL中有效,但在Ruby中僅爲'nil'。兩者意味着幾乎相同 - 沒有價值。 – MikDiet