计算railsvalidation中的单词

我正在使用以下validation来计算rails中的单词(我从Rails文档中得到了示例),但它并不真实:

validates :body, :length => { :minimum => 50, :maximum => 300, :tokenizer => lambda { |str| str.scan(/\w+/) }, :too_short => "must have at least %{count} words", :too_long => "must have at most %{count} words" } 

一个用户试图发布一个291个单词的东西(这是Word给出的计数)并且它被拒绝的时间太长了。 我不确切地知道正在使用的表达式有什么问题,或者可能是一个很好的表达式来确保准确的字数。

而不是扫描/ \ w + /你应该扫描/ \ s + | $ /并将最大值减1,因为\ w字符匹配对于exception字符可能是意外的,因为只有A-Za-z0-9_-有效。

你可以试试:

 :tokenizer => lambda { |str| str.split }