2010-04-30 45 views
0

OK:ActiveRecord錯誤?或者我錯了? (validates_presence_of如果)

User 
    attr_accessible :name, :email, :email_confirmation 

    validates_presence_of :email_confirmation if :email_changed? 

在以下情況下會發生什麼:

u = User.find 1 
u.name = 'Fonzi' 
u.name_changed? # => true 
u.email_changed? # => false 
u.valid? # => false : email_confirmation is required 

基本上,如果我改變,如果要,除非只會驗證正常工作,不會驗證電子郵件是否沒有改變,將驗證電子郵件是否改變。我認爲IF表示「如果以下函數返回true,那麼運行此驗證。似乎向後工作!?我是否錯誤?

回答

4

你已經有條件驗證的語法有點混淆了,而不是使用常規後修復有條件這樣,你通過驗證方法稱爲選項「如果」,它的值是一個方法,一個進程,或者一個字符串所以應該看起來更像是這樣:

validates_presence_of :email_confirmation, :if => :email_changed?

請查看documentation獲取全文。

+0

哈!謝謝,它對編碼的要求很晚。 – 2010-04-30 13:19:56

相關問題