2011-10-03 8 views
6

私はどこ方法レール3ないゼロ

MyModel.where(:some_id => !nil) 

を使用して、私のテーブルからnullではないすべてのレコードを選択しようとしているが、それは動作しません、これを行うには、他の解決策はありますか?

を使用でき

答えて

7

あなたは(データベースに依存しているのボーナスを持っている)Arel構文を使用してそれを行うことができ、文字列ではなく、ハッシュ

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

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

を使用します。

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

ニース...私はarelがまだレール開発者の中で少し過小評価されていると感じています – lucapette

+0

@lucapetテが同意しましたが、準不在のドキュメントはその責任を負うことがあります。 –

+0

@BenoitGarretありがとうございました、あなたはその日を救った!私はsqlite3で動作するフィルタクエリを持っていましたが、Postgresで壊れました。私はArelを知らなかった。ヒントありがとうございます。私はそれを徹底的に調べます。 – Guillaume