0
我最近創建了一個rails遷移,爲我的設計用戶添加一個用戶名。什麼是「null:false」真的嗎?
add_column :users, :username, :string
我創建了一個測試帳戶,並且註冊時沒有輸入用戶名。註冊完成並創建了一個沒有用戶名的用戶。我必須解決這個問題,因爲我需要一個用戶名來設置配置文件url。所以,我在我的遷移更新爲:
add_column :users, :username, :string, null: false
我認爲這將阻止用戶使用空用戶名創建一個帳戶 - 沒有工作!我仍然要註冊沒有用戶名。
最終加入...
validates_presence_of :username
...我user.rb模式固定的問題。但爲什麼沒有null:假停止它呢?我爲什麼要保留它,它是如何工作的?
因此,在插入行時,如果username = null,他不應該得到數據庫約束失敗? –
您不能只更新已經應用的遷移文件,並期望數據庫同步。您需要回滾migraiton並再次應用或創建一個新的修改約束。只要檢查你的數據庫模式,如果NOT NULL存在'username'。請參閱此處:http://guides.rubyonrails.org/active_record_migrations.html#changing-existing-migrations – gertas