2013-02-19 58 views
0

在我user.rb模式,我有以下幾點:如何在檢查長度之前讓軌道驗證修剪?

validates :fname, :length => { :minimum => 1, :maximum => 100 }, :unless => Proc.new { |user| user.new_record? || !user.password_confirmation.nil? } 

問題是用戶可以提交FNAME爲" "這是所有的空白,這技巧驗證。如何在查找長度之前驗證修剪?

回答

2

你可以添加一個before_validation回調修整FNAME

before_validation :trim_fname 

def trim_fname 
    self.fname.strip! 
end 
+0

謝謝,但似乎很瘋狂必須這樣做的所有領域/模型。有沒有建立在魔術欄的方式來做到這一點? – AnApprentice 2013-02-19 02:02:06

+0

我不確定是否有辦法爲所有模型執行此操作,但對於單個模型,您可以迭代每個屬性並調用它。 – jvnill 2013-02-19 02:04:52

+0

@AnApprentice - 你在找什麼樣的魔法?再看看你的原始驗證,它的工作原理與書面一樣。問題是你有一個額外的條件被考慮在內。有時你只需編寫代碼就可以做你想做的事。 – sosborn 2013-02-19 02:05:54