2017-04-11 22 views
5

Tôi đang sử dụng Rails 5. Làm cách nào để tạo quy tắc xác thực cho mô hình của tôi có giá trị nếu thuộc tính KHÔNG khớp với mẫu? Tôi có điều nàyLàm cách nào để xác thực nếu thuộc tính mô hình của tôi KHÔNG khớp với regex?

validates_numericality_of :my_str, :with => /\d:\d/, :allow_blank = true 

Nhưng điều tôi thực sự muốn nói là xác thực nếu chuỗi không khớp với cụm từ thông dụng.

Trả lời

1

Những gì tôi đã hiểu là bạn muốn xác nhận vượt qua nếu nó không phải là một số vậy tại sao không bạn thay đổi regex để phù hợp với bất cứ điều gì nhưng con số:

/^(?!\d)/ 

Sử dụng mã của bạn nó sẽ là

validates_format_of :my_str, :with => /^(?!\d)/, :allow_blank = true 

Hoặc:
như documentation nói

Ngoài ra, bạn có thể yêu cầu thuộc tính được chỉ định không khớp với cụm từ thông dụng bằng cách sử dụng tùy chọn: không có.

Vì vậy:

validates_format_of :my_str,format: { without => /\d:\d/}, allow_blank = true 

với validates_format_of xác nhận giá trị của các thuộc tính bằng cách kiểm tra xem họ có phù hợp với một biểu thức chính quy định, được quy định bằng cách sử dụng :with hoặc :without tùy chọn

+0

Liệu ': không có' tồn tại trong Rails 5 (Ruby 2.4)? Tôi đã tạo "validates: my_num, numericality: {greater_than: 0,: ​​only_integer => true},: allow_blank => true,: without =>/\ d: \ d /" nhưng nhận được lỗi, "/ Users/davea /.rvm/gems/ruby-2.4.0/gems/activemodel-5.0.2/lib/active_model/validations/validates.rb:120:in 'rescue in block in validates ': Unknown validator:' WithoutValidator '(ArgumentError) " – Dave

+1

sử dụng' validates_format_of 'thay vì' validates_numericality_of', trong đó có tùy chọn ': without'. – dezull

Các vấn đề liên quan