2013-09-27 3 views
0

Je consignation toutes les impressions d'une certaine page, en enregistrant chaque visite comme enregistrement dans Impression. Enregistre le user_id si le visiteur est connecté, donc certains enregistrements n'ont pas de user_id enregistré.Une requête qui exclut certains identifiants mais inclut tous les autres (y compris nil)

Lorsque vous interrogez le journal pour afficher le nombre de visites, je souhaite exclure les administrateurs du site.

Ce qui suit est une façon d'exclure les administrateurs, mais il ne comprend pas les enregistrements sans user_id atribute:

Impression.where("user_id NOT IN (?)", [1,2]) 

Comment puis-je, dans Rails 3.2, faire une requête qui exclut les enregistrements avec certains (multiple) valeurs d'attribut?

Répondre

1

Impression.where("user_id is null OR user_id NOT IN (?)", [1,2])

2

Essayez ceci:

Impression.where("user_id is not null and user_id NOT IN (?)", [1,2]) 
+0

Nope, ne fonctionne pas .. –

+0

Désolé, il devrait ressembler à ceci: Impression.where ("user_id est non nul et user_id NOT IN (?) ", [1,2]) –

+0

Je veux inclure aussi des enregistrements qui n'ont pas l'ensemble user_id, je suppose que' n'est pas nul 'fait l'inverse? –

Questions connexes