我有一个用户模型
之间有区别吗?
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
答案 0 :(得分:1)
validates
宏更灵活,因为它还允许您执行以下操作:
validates :name, :format => { :with => /\A[a-zA-Z]+\z/,
:message => "Only letters allowed" }, :length => { :in => 6..20 }
validate
方法实际上是一种快速简便的方法,可以在现有方法不存在的情况下进行自定义验证。 (当自定义验证过于复杂时,您通常应将它们移到自定义验证器中并使用validates
宏)。
在http://guides.rubyonrails.org/active_record_validations_callbacks.html
了解详情答案 1 :(得分:0)
是 - 第一个将无法保存空字符串,而第二个将允许它。