2011-10-03 12 views
6

che sto cercando di selezionare tutti i record che non sono nulla dal mio tavolo con cui metodorotaie 3 non nullo

MyModel.where(:some_id => !nil) 

ma non funziona, c'è qualche altra soluzione per fare questo?

risposta

7

utilizzare una stringa piuttosto che un hash

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

È possibile utilizzare:

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

È possibile farlo utilizzando la sintassi Arel (che ha il vantaggio di essere indipendente dal database):

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

Nice ... Sento che Arel è ancora un po 'sottovalutato tra gli sviluppatori di binari – lucapette

+0

@lucapet Sono d'accordo, anche se la quasi inesistente documentazione potrebbe essere la causa di quello ... –

+0

@BenoitGarret Grazie, hai salvato il giorno! Ho avuto una query di filtro che funziona in sqlite3, ma non funziona su Postgres. Non conoscevo Arel. Grazie per il suggerimento. Lo esaminerò. – Guillaume