2013-03-18 13 views
17

nếu tôi làmLàm thế nào để xác nhận văn bản là không trống trong Rails

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

tôi vẫn còn có một khả năng của việc có một văn bản mà chỉ spaces/r hoặc /n bao gồm - chars không thể nhìn thấy, mà trong khi isn văn bản 't trống theo định nghĩa, nó là trống bằng cách nhìn vào nó

Làm thế nào tôi có thể xác nhận rằng các văn bản đã có một phút và thời gian tối đa được liệt kê ở trên và cũng có thể nhìn thấy (không phải 10 chỗ)

+0

Bạn luôn có thể thử sử dụng regex để kiểm tra các ký tự không phải từ, không phải số và đặc biệt, giống như những gì được đề xuất trong [câu hỏi/câu trả lời] khác này (http://stackoverflow.com/questions)/7680771/rails-custom-validation-based-on-a-regex). – summea

+0

Hãy thử xem [câu hỏi/câu trả lời] này (http://stackoverflow.com/questions/6765020/regex-to-validate-string-having-only-characters-not-special-characters-blank). – summea

Trả lời

43

Rails thêm phương pháp tiện dụng blank? mà kiểm tra đối với các chuỗi sai, không có và rỗng như được mô tả here.
Rails cũng thêm trình xác thực tiện dụng allow_blank: false.

Vì vậy, trong trường hợp của bạn nên là:

validates :body, presence: true, allow_blank: false


Chỉnh sửa (câu trả lời ban đầu ở trên):

Như đã nêu trong câu trả lời dưới đây, allow_blank: false là không cần thiết vì đó là mặc định hành vi của presence: true.

+6

Đặt 'allow_blank: false' là thừa vì' validates presence: true' đã thực hiện những gì bạn muốn. Xin lưu ý câu trả lời đúng ở dưới cùng: http://stackoverflow.com/a/24832913/273715 – jottr

5

gì nếu bạn cố gắng thêm một cái gì đó như thế này:

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

Ghi chú:

  • validates_format_of cho phép bạn xác nhận với regex
  • [[:graph:]] phép bạn kiểm tra một chuỗi cho các ký tự in (see "Character Classes")
24

presence: true đã thực hiện điều đó theo http://guides.rubyonrails.org/active_record_validations.html#presence

helper này xác nhận rằng các thuộc tính xác định là không có sản phẩm nào. Nó sử dụng trống? để kiểm tra xem giá trị có phải là số không hoặc một chuỗi trống, nghĩa là một chuỗi rỗng hoặc chứa khoảng trắng.

+0

Điều này cũng tương tự đối với Rails 3: http://guides.rubyonrails.org/v2.3.11/activerecord_validations_callbacks.html# validates-presence-of – jottr

+1

Vì vậy, đây là câu trả lời đúng ... cảm ơn! – gfd