我正在创建一个限制字段中字数而不是字符数的应用。
我该怎么做?
答案 0 :(得分:1)
使用正则表达式对单词进行计数,然后在验证中使用它:
def word_count(s)
count = 0
s.scan(/\b\S+\b/) { count = count + 1}
count
end
答案 1 :(得分:1)
拆分默认设置为拆分(白色)空间,以便:
s.split.size
应该为你计算字数。
您是否希望在验证中使用它:
class Widget < ActiveRecord::Base
validate :word_count_is_less_than_5
private
def word_count_is_less_than_5
errors[:widget] << "too many words" if desc.split.size > 4
end
end
答案 2 :(得分:1)
由于:tokenizer
选项,实际上有一种非常简单的方法可以做到这一点。此示例将模型上的摘要字段限制为最多250个字。
validates :summary, :presence => true, :length => {
:maximum => 250,
:tokenizer => lambda { |str| str.scan(/\w+/) },
:too_long => "Please limit your summary to %{count} words"
}
在这种情况下,标记生成器将字符串拆分为单词。