我正在使用以下验证来计算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给出的单词)并且被拒绝的时间太长了。我不确切地知道正在使用的表达式有什么问题,或者可能是一个很好的表达式来确保准确的字数。
答案 0 :(得分:5)
除了扫描/ \ w + /之外,您应该扫描/ \ s + | $ /并将最大值减1,因为\ w字符匹配对于不常见的字符可能是意外的,因为只有A-Za-z0-9_-是有效的。
答案 1 :(得分:2)
您可以尝试:
:tokenizer => lambda { |str| str.split }