验证字段不超过n个字的最快方法是什么?

Jam*_*sen 0 ruby validation ruby-on-rails word-count

我有一个Ruby-on-Rails模型:

class Candidate < ActiveRecord::Base
  validates_presence_of :application_essay
  validate :validate_length_of_application_essay

  protected

  def validate_length_of_application_essay
    return if application_essay.blank? # don't add a second error message if they didn't fill it out
    errors.add(:application_essay, :too_long), unless ...
  end
end
Run Code Online (Sandbox Code Playgroud)

没有进入C,检查application_essay包含不超过500字的最快方法是什么?您可以假设大多数论文至少有200个单词,不可能超过5000个单词,并且是英文(或伪英语有时称为"business-ese").您也可以将任何您想要的内容归类为"单词",只要您的分类对于典型用户来说是显而易见的.(注意:这不是讨论什么是"典型用户":)的地方)

ber*_*kes 7

在Rails3中使用:tokenizerwith with lambda方法也可以.

validates_length_of :essay, :minimum => 100, :too_short => "Your essay must be at least 100 words."), :tokenizer => lambda {|str| str.scan(/\w+/) }
Run Code Online (Sandbox Code Playgroud)

它可能不是最快的,但肯定是最干净的方式.