[英]Method value is 'nil' rather than 'true' or 'false' after adding the field to a migration table
我將一個名為“custom_design_enabled”的字段添加到我的 schema.rb 文件中的“members”表中,作為默認值為 true 的布爾值。 當我嘗試在 rails 控制台中更改此設置時,它表示該字段為“nil”而不是“true”或“false”。 我認為有一部分遷移過程被我無意中遺漏了,它為方法 'custom_design_enabled' 提供了一個值。 誰能幫我解決這個問題?
這很可能發生,因為您沒有在新字段上指定默認值。 解決此問題的最簡單方法是創建新遷移。 創建一個新的遷移文件( rails g migration change_custom_design_enabled_default
)並在遷移文件中嘗試:
def up
change_column :members, :custom_design_enabled, :boolean, default: true
end
def down
change_column :members, :custom_design_enabled, :boolean, default: nil
end
或者,您可以嘗試使用rake db:rollback
上次遷移並將null: false, default: true
到原始遷移的add_column
方法。 如果產生使用的遷移,這可能會失敗change
,而不是up
和down
與軌道無法弄清楚如何取消它,但它是值得一試。
更新:如果回滾不起作用,您可以將原始遷移更改為:
def up
add_column :members, :custom_design_enabled, :boolean
end
def down
remove_column :members, :custom_design_enabled
end
然后做rake db:rollback
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.