6

Tôi muốn xác nhận một trường có regex và cũng cho phép nó để trống (để chấp nhận một chuỗi rỗng). Cho đến nay, điều duy nhất tôi quản lý là viết một regex cho phép một chuỗi rỗng, như:Rails ActiveRecord xác thực regex của các trường không bắt buộc

validates :field, 
      format: { with: /\A([a-z]+|)\z/i } 

Bây giờ, đây không phải là cách thích hợp - điều này có vẻ như một hack xấu xí. Tôi muốn biết nếu có cách tiếp cận khác (đúng)?

Trả lời

10

allow_blank sẽ hoạt động. (Ngoài ra còn allow_nil là để chấp nhận con số không giá trị duy nhất (không phải là một chuỗi rỗng))

validates :field, 
      format: { with: /\A([a-z]+|)\z/i }, :allow_blank => true 
+0

Ah, đẹp, tôi biết đó là vấn đề RT (F) M! =) – aL3xa

0

Bạn không cần thay đổi luân phiên ... bạn có thể sử dụng '*' lượng hóa để xác định 'không hay nhiều' xuất hiện . Ngoài ra, tôi muốn sử dụng '\ w' thay vì [a-z] ... điều này sẽ bắt chữ và số.

validates :field, 
     format: { with: /\A(\w*)\z/i } 
+0

Tôi đã đặt '[a-z]' làm ví dụ, nhưng tôi không muốn sử dụng '*' ở đó. ': allow_blank' là hoàn hảo, vì nó cho phép cả chuỗi' nil' và rỗng. – aL3xa

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