私が行った場合
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スペースではない)ことを確認するにはどうすればよいですか?
Railsは、便利なメソッドblank?
を追加します。これは、説明されているように、false、nil、空の文字列をチェックします here 。
Railsには、便利なバリデータallow_blank: false
も追加されています。
したがって、あなたの場合はそれは次のようになります:
validates :body, presence: true, allow_blank: false
編集(上記の元の回答):
以下の回答で述べたように、allow_blank: false
はpresence: true
のデフォルトの動作であるため、必要ありません。
presence: true
はすでに http://guides.rubyonrails.org/active_record_validations.html#presence に従ってそれを行います
このヘルパーは、指定された属性が空でないことを検証します。ブランクを使いますか?値がnilまたは空白の文字列、つまり空であるか空白で構成される文字列であるかどうかを確認するメソッド。
次のようなものを追加しようとするとどうなるでしょう:
validates_format_of :body, :with => /\A[[:graph:]]\Z/i
ノート:
validates_format_of
正規表現で検証できます[[:graph:]]
を使用すると、印刷可能な文字の文字列をチェックできます( 「文字クラス」を参照 )