我應該何時添加數據庫約束條件,如果我已經有驗證完成相同的事情?如果我對這些驗證進行驗證,是否應該爲null false和width添加數據庫約束?
我知道,如果某件事情對您的應用程序至關重要,例如確保用於用戶身份驗證的電子郵件地址是唯一的,那麼您確實需要具有唯一約束的數據庫索引。這是我有問題的非關鍵任務領域。
例如,如果我有一個標題字段的文章表,我會在模型中有一個限制,防止空白標題提交。
# app/models/article.rb
validates :title, presence: true
是否還向數據庫添加null false約束是一種最佳做法?如果空白標題以某種方式超過了模型驗證,那麼這不是一個任務關鍵問題。
最大長度是一個類似的問題。我還可以在文章模型中設置最大長度驗證,以防止超過100個字符的標題。
# app/models/article.rb
validates :title, presence: true, length: { maximum: 100 }
默認情況下,Postgres將一個varchar字段(Rails的字符串類型)的最大長度設置爲255,如果過長的標題莫名其妙地得到過驗證它不是一個關鍵任務的問題,所以有沒有性能優勢將數據庫中的寬度約束設置爲100個字符?或者如果是2個字符的state_code呢?如果模型驗證會阻止它,在數據庫中設置較短寬度的最佳做法是否與默認值相比較?
而我在表單字段中添加一個HTML屬性來檢查存在和最大長度,因此在同一個輸入上可能會有三次檢查。