2012-01-06 23 views
21

Tôi muốn xác thực định dạng của giá trị biểu mẫu, cho phép giá trị trống hoặc yêu cầu định dạng cụ thể.Đường ray: Cách xác thực định dạng chỉ khi có giá trị?

Để xác nhận một giá trị so với một định dạng, điều này hoạt động tốt:

validates :application_bundle_identifier, :format => { 
    :with => /^[a-zA-Z0-9.-]+$/, 
    :message => "A bundle identifier should contain only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters." 
} 

Bây giờ, tôi muốn cho phép người dùng không nhập giá trị gì cả. Trong trường hợp này, tôi có thể tinh chỉnh regexp thành ^[a-zA-Z0-9.-]*$, nhưng điều này dường như không phải là cách Rails rất tốt. Tùy thuộc vào định dạng, nó có thể là không thể, hoặc ít nhất là ít rõ ràng hơn.

Thực tiễn tốt nhất trong trường hợp này là gì?

Trả lời

45

Bạn có thể sử dụng tùy chọn :allow_blank => true để bỏ qua xác thực khi thuộc tính trống/trống/không.

0

Thêm unless nil? || blank?, nên bỏ qua xác thực nếu nó trống (trống) hoặc không, tôi tin.

Xem ví dụ mã cuối cùng trên this page.

+0

Ví dụ nào bây giờ? –

+0

Trình xác thực tùy chỉnh ở cuối trang trong 'lib/email_format_validator.rb' – jefflunt

+0

Nó phải có thay đổi kể từ lần đầu tiên bạn giới thiệu nó. –

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