我有一個用戶模式不同類型的驗證軌
有
class User < ActiveRecord::Base
validates :name, :presence => true
end
和
class User < ActiveRecord::Base
def validate
errors.add_to_base "name should not be nil" if name.nil?
end
end
我有一個用戶模式不同類型的驗證軌
有
class User < ActiveRecord::Base
validates :name, :presence => true
end
和
class User < ActiveRecord::Base
def validate
errors.add_to_base "name should not be nil" if name.nil?
end
end
的validates
宏是更加靈活,因爲它也可以讓你做這樣的事情:
validates :name, :format => { :with => /\A[a-zA-Z]+\z/,
:message => "Only letters allowed" }, :length => { :in => 6..20 }
的validate
方法確實是一個快速簡便的方法來進行自定義驗證時,不存在現有的。 (當自定義驗證過於複雜時,通常應將它們移動到自定義驗證器中並使用宏)。
查看更多http://guides.rubyonrails.org/active_record_validations_callbacks.html
之間的差別是 - 第一個將無法保存一個空字符串,而第二個將允許它。
當然,但假設兩者都檢查爲零?,其他所有相同? – nik7
我的意思是我們需要顯式調用user.valid嗎?在第二種情況下?或者他們將像往常一樣被驗證? – nik7
'valid?'調用'validate'以及驗證方法。 (IIRC,'驗證'宏的所有鏈驗證進入'validate'方法' –