web-dev-qa-db-ja.com

Railsでテキストを検証する方法が空白ではない

私が行った場合

  validates :body, :presence => true, :length => {:maximum => 30000, :message => ' is a bit long...'}
  validates :body, :length => {:minimum => 10, :message => ' is a bit short...'}

spaces/rまたは/nのみが含まれるテキストがある可能性があります-表示されない文字。定義上、テキストは空白ではありませんが、それを見て

テキストが上記の最小長と最大長であり、表示されている(10スペースではない)ことを確認するにはどうすればよいですか?

26
Nick Ginanto

Railsは、便利なメソッドblank?を追加します。これは、説明されているように、false、nil、空の文字列をチェックします here
Railsには、便利なバリデータallow_blank: falseも追加されています。

したがって、あなたの場合はそれは次のようになります:

validates :body, presence: true, allow_blank: false


編集(上記の元の回答):

以下の回答で述べたように、allow_blank: falsepresence: trueのデフォルトの動作であるため、必要ありません。

55
Lisinge

presence: trueはすでに http://guides.rubyonrails.org/active_record_validations.html#presence に従ってそれを行います

このヘルパーは、指定された属性が空でないことを検証します。ブランクを使いますか?値がnilまたは空白の文字列、つまり空であるか空白で構成される文字列であるかどうかを確認するメソッド。

27
Jacob Minshall

次のようなものを追加しようとするとどうなるでしょう:

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

ノート:

  • validates_format_of正規表現で検証できます
  • [[:graph:]]を使用すると、印刷可能な文字の文字列をチェックできます( 「文字クラス」を参照
6
summea