2013-07-22 57 views
2

這可能有點基本,但無法在任何地方找到確切的答案。我已經在我的應用程序中設置了一個聯繫表單,並且已經放入了一個隱藏字段,當完成後,用一些Jquery禁用提交按鈕。我在阻止垃圾郵件的自動嘗試..驗證空白欄Rails模型

可我也我的模型添加一些驗證?

validates :ghost, :presence => false 

看着文檔這是無效的?我想,如果這個字段被填充在表單中失敗。不知道如何去了解這個

編輯

所以我現在已經讀了我可能使用

validates_exclusion_of :ghost, :on => :create 

雖然這仍然是失敗的,因爲我不認爲我通過了正確的論點。

回答

5

:presence => false意味着你禁用存在驗證。

你需要編寫自己沒有驗證(雖然在Rails的4.0這樣的驗證存在,absence: true)。

validate :ghost_is_absent 

def ghost_is_absent 
    errors.add :ghost if ghost.present? 
end 
1

我很抱歉地說,但你爲什麼想要做的事情如此不同,做這種方式將使事情對任何未來的開發人員在這片驗證的工作更加混亂。 第一件事: 1)你可以做的是相反的,它標記爲垃圾郵件時,該字段爲空,反之亦然,然後簡單地利用有效validates_presence_of檢查:鬼 2),或者如果你想保護的垃圾郵件使用CAPCHA(對於那個回推寶石)

3)或者如果你想它只做你的方式,那麼只需添加一個自定義驗證 嘗試創建一個自定義驗證。

validate :check_for_spam 

def check_for_spam 
    errors.add_to_base "ghost is present this is a spam" if ghost.present? 
end 
0

如果你想檢查:鬼是空白:

validates :ghost, inclusion: {in: ['']} 

如果你想檢查:鬼是零,你必須依賴於一個自定義的驗證。