2012-11-20 11 views
11

Mam model, w którym chciałbym ograniczyć dane wejściowe dla pola, aby być zero lub mieszczą się w określonej tablicy wartości. Mogę dostać części roboczej integracji, ale allow_nil: true nieco nie wydają się działać dla mnie:Sprawdzanie poprawności przy włączaniu w tablicy opcji LUB zerowanie

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

Próbowałem modyfikując tę ​​ostatnią linię do rzeczy jak:

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

ale bez wykorzystać. Jaki jest najprostszy sposób wyrażenia tej kombinacji prostego włączenia lub zera?

Odpowiedz

10

poprawna forma, aby umożliwić nil, aby potwierdzić, umożliwiając jednocześnie ograniczoną tablicę wartości jest następujący:

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

uprzedzenia jak opcja allow_nil jest wewnątrz opcja włączenie hash

0

Rozwiązałem to przez wykonanie sprawdza linia wyglądać następująco:

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

ten sposób, że pozwalają nil, ale nie zmieniają stała Używam moim zdaniem do karmienia zbiór wybranych opcji . Od tego czasu dodałem również tablicę z elementem "'', więc nie muszę jawnie dołączać pustego elementu do pomocnika wejściowego formularza.

Powiązane problemy