2011-08-06 10 views
13

Następujący znalazca wypisze IS NULL.ActiveRecord NIE JEST NULL Wyszukiwarka sql

User.where(:id =>nil) #=> [] 
User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IS NULL ORDER BY created_at DESC 

Ale nie mogłem znaleźć wydrukowania IS NOT NULL?

+1

Duplikat http://stackoverflow.com/questions/4252349/rail-3-where-condition-using-not-null – Vache

+0

To pytanie ma odpowiedź - http://stackoverflow.com/questions/4252349/rail-3- where-condition-using-not-null – ipr101

Odpowiedz

15

Najprostszym, idiomatyczne rozwiązanie ActiveRecord:

User.where.not(id: nil) 
+1

Uwaga : Działa tylko z "rails> = v4.0.2". Zobacz: http://apidock.com/rails/ActiveRecord/QueryMethods/WhereChain/not – morgents

26

Spróbuj User.where("id IS NOT NULL")

To powinno wykonywać swoją pracę

5

User.where.not(id: nil) będzie pracować dla szyn 4.

User.where("id IS NOT NULL") będzie działać na starszych wersjach.

+0

To mniej więcej to samo, co http://stackoverflow.com/a/27613775/38765 (chociaż najpierw odpowiedziałeś), a także nie działa na Rails 3. –

0

Szyny 4

można spróbować tego

User.where("id is not NULL") 

Także jeśli szukasz, aby wykluczyć konkretny identyfikator i zawierają wartości zerowe następujące woli praca

User.where("id is NULL or id != 'excluded_id'")