2011-08-06 34 views
13

Công cụ tìm sau in ra IS NULL.ActiveRecord IS NOT NULL sql finder

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

Nhưng tôi không thể tìm cách in ra IS NOT NULL một?

+1

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

+0

Câu hỏi này có câu trả lời của bạn - http://stackoverflow.com/questions/4252349/rail-3- where-condition-using-not-null – ipr101

Trả lời

15

Cách đơn giản nhất, giải pháp ActiveRecord thành ngữ:

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

Lưu ý : Chỉ hoạt động với 'rails> = v4.0.2'. Xem: http://apidock.com/rails/ActiveRecord/QueryMethods/WhereChain/not – morgents

26

Hãy thử User.where("id IS NOT NULL")

này nên làm công việc của bạn

5

User.where.not(id: nil) sẽ làm việc cho đường ray 4.

User.where("id IS NOT NULL") sẽ làm việc cho các phiên bản cũ.

+0

Đây là nhiều hơn hoặc ít hơn giống như http://stackoverflow.com/a/27613775/38765 (mặc dù bạn trả lời đầu tiên), và cũng không hoạt động trên Rails 3. –

0

Rails 4

bạn có thể thử này

User.where("id is not NULL") 

Ngoài ra nếu bạn đang tìm kiếm để loại trừ id nói riêng và bao gồm các giá trị nil sau chí làm việc

User.where("id is NULL or id != 'excluded_id'") 
Các vấn đề liên quan