5

Mam do czynienia z dziwnym problemem w sprawdzaniu poprawności skojarzenia w klasie pochodnej.Sprawdza powiązanie w klasie potomnej modelu

Class Contact < ActiveRecord::Base 

    has_and_belongs_to_many :things 

end 

Class SubContact < Contact 

# validates_presence_of :things 
    validate :must_have_things 

    def must_have_things 
    if things.blank? 
     errors.add("Must select things") 
    end 
    end 

end 

W SubContact klasy, staram się potwierdzić obecność rzeczy, ale nic nie działa. Próbowałem zarówno niestandardowych i wbudowanych walidatorów Jak mogę to osiągnąć?

+0

@aleksanderbird w pytaniu OP nigdy nie wspomniał o STI, więc nie sądzę, że link jest przydatny –

+0

Czy nie jest przykładowy kod OP pokazujący STI? Domyślam się, że jeśli nie ma kolumny typu w tabeli kontaktów, to nie jest to STI ... – alexanderbird

+0

tak, nie mamy kolumny typu. –

Odpowiedz

3

add potrzebuje atrybutu. Spróbuj użyć:

errors.add(:base, "Must not be blank") 

W tym przypadku jest to klasa podstawowa, ale może to być również dowolny inny atrybut. Wymień nazwę atrybutu klasy SubContract lub :base.

+0

Nie trzeba zwracać wartości true lub false, ponieważ dodajemy błąd, ale nawet jeśli to zrobimy, to nadal nie działa. –

+0

Edytowałem moją wersję. Sprawdź – mhaseeb

+0

Nie @mhaseeb to nie działa dla dziedziczonych zasobów. –

Powiązane problemy