2011-10-03 9 views
6

Próbuję zaznaczyć wszystkie rekordy, które nie są nieważne z moim stole używając gdzie metodaszyny 3 nie nil

MyModel.where(:some_id => !nil) 

ale to nie działa, jest jakieś inne rozwiązanie, aby to zrobić?

Odpowiedz

7

Użyj ciąg zamiast mieszania

MyModel.where("some_id is not null") 
1

Można użyć:

MyModel.where("some_id IS NOT NULL") 
12

Można to zrobić przy użyciu składni Arel (który ma bonus jest baza danych niezależne):

MyModel.where(MyModel.arel_table['some_id'].not_eq(nil)) 
+0

Ładne ... Czuję, że arel jest jeszcze niedoceniany wśród deweloperów szyn – lucapette

+0

@lucapet zgodzili się, chociaż quasi-nieistniejąca dokumentacja może być powodem do winy ... –

+0

@BenoitGarret Dziękuję, uratowałeś dzień! Miałem zapytanie filtrujące działające pod sqlite3, ale zepsute na Postgresie. Nie znałem Arel. Dziękuję za podpowiedź. Zapoznam się z tym. – Guillaume

Powiązane problemy