Ruby on rails 3 如何验证文本是';铁轨上没有空白

Ruby on rails 3 如何验证文本是';铁轨上没有空白,ruby-on-rails-3,validation,chars,Ruby On Rails 3,Validation,Chars,如果我这样做 validates :body, :presence => true, :length => {:maximum => 30000, :message => ' is a bit long...'} validates :body, :length => {:minimum => 10, :message => ' is a bit short...'} 我仍然有可能拥有一个只包含空格和/r或/n-不可见字符的文本,虽然文本在定义

如果我这样做

  validates :body, :presence => true, :length => {:maximum => 30000, :message => ' is a bit long...'}
  validates :body, :length => {:minimum => 10, :message => ' is a bit short...'}
我仍然有可能拥有一个只包含
空格
/r
/n
-不可见字符的文本,虽然文本在定义上不是空白的,但在查看时却是空白的


如何验证文本是否具有上面列出的最小长度和最大长度,以及是否可见(不是10个空格)

如果您尝试添加以下内容,该怎么办:

validates_format_of :body, :with => /\A[[:graph:]]\Z/i
注:

  • 验证\u格式\u的
    允许您使用正则表达式进行验证
  • [[:graph:][]
    用于检查字符串中的可打印字符()

Rails添加了方便的方法
blank?
,该方法可按说明检查假字符串、零字符串和空字符串。
Rails还添加了方便的验证器
allow\u blank:false

因此,在您的情况下,应该是:

验证:主体,状态:true,允许为空:false


编辑(以上原始答案):


如下面的回答所述,
allow_blank:false
是不需要的,因为这是
presence:true
的默认行为

presence:true
已经根据

此帮助程序验证指定的属性是否为空。它使用空白?方法检查值是否为nil或空字符串,即空字符串或由空格组成的字符串


您可以尝试使用正则表达式来检查非单词、非数字和特殊字符,就像这篇文章中建议的那样。也可以尝试查看这一点。Rails 3也是如此:设置
allow\u blank:false
是多余的,因为
验证存在性:true
已经满足了您的要求。请注意底部的正确答案: