簡體   English   中英

將字段添加到遷移表后,方法值為“nil”而不是“true”或“false”

[英]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 ,而不是updown與軌道無法弄清楚如何取消它,但它是值得一試。

更新:如果回滾不起作用,您可以將原始遷移更改為:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM