有没有一种方法只使用几行代码来验证输入字段?自定义验证,两行?
当我使用自定义验证时,我不得不这样做。
型号
class Search < ActiveRecord::Base
validates :email, :presence => true, :email => true
end
验证
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
record.errors[attribute] << (options[:message] || "is not an email") unless
value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
end
end
end
这是我真正想做的事情。
class Search < ActiveRecord::Base
validates :email, :email => lambda do |record, value|
record.errors[:email] << "invalid field" unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
end
end
这可能吗?
我只是要在这里把这个... http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates – 2011-03-22 12:43:52
此外,验证应在你的模型上,而不是你的控制器。 – 2011-03-22 12:44:27
@Beerlington要复制和粘贴,现在已经修复。 – Oleander 2011-07-06 08:10:13