2012-11-20 25 views
11

Tôi có một mô hình mà tôi muốn giới hạn đầu vào cho một trường hoặc là không hoặc nằm trong một mảng giá trị được chỉ định. Tôi có thể lấy sự bao gồm phần làm việc, nhưng các bit allow_nil: true dường như không làm việc cho tôi:Xác thực việc đưa vào trong phạm vi các tùy chọn HOẶC là nil

class Mock::Patient < ActiveRecord::Base 
    LANGUAGE_OPTIONS = %w[English Spanish French German Chinese Hindi Punjabi] 
    validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS } 
end 

tôi đã cố gắng thay đổi mà dòng cuối cùng để những thứ như:

validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS }, allow_nil: true 

Nhưng để không avail. Cách đơn giản nhất để thể hiện sự kết hợp của sự bao gồm đơn giản hoặc nil là gì?

Trả lời

10

đúng mẫu để cho phép nil để xác nhận trong khi vẫn cho phép một mảng hạn chế về giá trị như sau:

validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS, allow_nil: true } 

thông báo như thế nào lựa chọn allow_nil là bên tùy chọn bao gồm băm

0

tôi giải quyết này bằng cách làm cho xác nhận dòng giống như thế này:

validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS + [nil] } 

Bằng cách này, tôi cho phép con số không, nhưng tôi không thay đổi hằng số tôi sử dụng trong quan điểm của tôi để nuôi bộ sưu tập các tùy chọn chọn . Tôi cũng đã thêm vào trước mảng với một phần tử '' vì vậy tôi không phải bao gồm một cách rõ ràng trống trong trình trợ giúp nhập biểu mẫu của tôi.

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