2012-05-01 10 views
1

日付が記入されている場合(nullでない場合)、Rails3(Arelの有無にかかわらず)をどのようにチェックインしますか?チェックデートはnullではありませんか? (レール、arel)

obj.where('PLANNED IS NOT NULL') 

SQLを使用しないとできますか?

// SQL 
SELECT * FROM projecttasks WHERE planned IS not null 

私が試した:

# all tasks which have a date 
tasks = Projecttask.where(:planned => !nil) 

または

# all task with no planned date (sql: is null) 
Projecttask.where(:planned => nil) 

をしかし、それは動作しません。一般的に興味深いのは、NULLとNON NULL列で 'どこで'行うことができるかです。

ありがとうございました。

+0

[条件NOT NULLを使用して、レール3]の可能な重複を(http://stackoverflow.com/questions/4252349/rail-3-where-condition-using-not-null) –

答えて

1

あなたのように、文字列の条件を使用する必要が推測この似たような質問を答えにチェックすることができます。 Ryan Biggの答えは、あなたが探していると思います。 Railsの3で

Rails where condition using NOT NULL

+1

それは、ありがとう! Projecttask.where(Projecttask.arel_table [:plans] .not_eq(nil))。to_sql – Roger

0

私はほとんどMongoidを使用するのでActiveRecordのには非常に流暢ではないんだけど、私はあなたがここにあなたの答えを見つけることができると思う:http://guides.rubyonrails.org/active_record_querying.html#conditions

を、私はあなたがwhere("planned is not null")

+0

うん申し訳ありませんが私がします私の質問を変えて、私はSQLの方法なしでそれを望んでいました(これは基本的にあなたが注入するSQLのビットです)。 – Roger

+0

ガイドページで読んだことは、私はそれについて言及していないので、不可能かもしれません。 – ksol

+0

ええ、私はARELがあなたに許してくれることを期待しましたが、私はそこに何も見ません... – Roger

10

:Railsの4でProjecttask.where('planned IS NOT NULL')

、新しいwhere.not方法があります。

Projecttask.where.not(planned: nil) 

User.where.not(name: nil) 
# SELECT * FROM users WHERE name IS NOT NULL 
+0

これは答えとしてマークする必要があります –

関連する問題