2011-08-19 83 views
0

我在我的模型如下:關閉驗證工作不

validates :name, :if => :should_validate_name?, 
       :presence => {:message => "Enter your name"}, 
       :length => { :maximum => 50 }, 
       :allow_blank => true 


    def should_validate_name? 
validating_name || new_record? 
end 

在我的控制器我有以下幾點:

def create 
     @user = User.new(params[:user]) 
     @user.validating_name = false 
     if @user.save 
     else 
     render :action => 'new' 
     end 
end 

我不想來驗證的存在在這一點上的名稱,並希望關閉它。

我認爲上面的代碼會工作,但它不會。我不知道爲什麼。

回答

2

您正在進行create操作,創建新記錄。所以new_record?將是真實的,即使validating_name不是。

+0

有沒有一種方法可以關閉驗證呢? – chell

+0

是的,讓':if'方法返回'false'。你想在什麼情況下跳過驗證? – Chowlett

+0

我們有一個表單,我們只想捕獲電子郵件而不是名稱。在某些情況下,我們讓用戶無名註冊,並且在某些情況下我們需要名稱。你的回答很有用,並且真正解決了這個問題。感謝您花時間回答。 – chell