2010-01-17 76 views
4

心中已經有了新的對Ruby和Rails和遇到一個比較奇怪的錯誤:ruby​​/rails NoMethodError?使用自定義的驗證方法時

class Person < ActiveRecord::Base 
    validates_presence_of :description, :if => require_description_presence? 

    def require_description_presence? 
     self.can_send_email 
    end 
end 

提高

NoMethodError in PeopleController#index 

undefined method `require_description_presence?' for #<Class:0x4c4fadc> 

回答

8

你應該通過驗證方法符號:

validates_presence_of :description, :if => :require_description_presence? 
0

你可以使這更短,更甜。 :if子句將具有同樣簡單的屬性。所以,如果can_send_email是人的布爾屬性,這將工作:

class Person < ActiveRecord::Base 
    validates_presence_of :description, :if => :can_send_email? 
end 

無需創建另一個方法只是爲了檢查該屬性。如果您注意到can_send_email末尾的額外問號,這是因爲Rails允許您使用布爾屬性來完成此操作。我喜歡它,因爲它使代碼的目的更加清晰。

相關問題