2011-10-03 2 views
6

Je suis en train de sélectionner tous les enregistrements qui ne sont pas nuls de ma table en utilisant la méthode oùrails 3 non nul

MyModel.where(:some_id => !nil) 

mais il ne fonctionne pas, est-il une autre solution pour le faire?

Répondre

7

Utilisez une chaîne plutôt qu'un hachage

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

Vous pouvez utiliser:

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

Vous pouvez le faire en utilisant la syntaxe Arel (qui a l'avantage d'être la base de données indépendante):

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

Nice ... Je me sens arel est encore un peu sous-estimé parmi les développeurs de rails – lucapette

+0

@lucapet Vous êtes d'accord, bien que la documentation quasi-inexistante puisse être à blâmer pour cela ... –

+0

@BenoitGarret Merci, vous avez sauvé la journée! J'ai eu une requête de filtre fonctionnant sous sqlite3, mais cassée sur Postgres. Je ne connaissais pas Arel. Merci pour l'indice. Je vais regarder dedans. – Guillaume

Questions connexes