3

日付が入力されている (null ではない) 場合、Rails3 (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 列で「where」を実行する方法。

ありがとう。

4

3 に答える 3

11

Rails 3 では:Projecttask.where('planned IS NOT NULL')

Rails 4 には、新しいwhere.notメソッドがあります。

Projecttask.where.not(planned: nil)

User.where.not(name: nil)
# SELECT * FROM users WHERE name IS NOT NULL
于 2013-11-07T08:39:24.657 に答える
3

この同様の質問で回答を確認できます。Ryan Biggによる答えは、あなたが探していると私が推測しているものです。

NOT NULL を使用した Rails where 条件

于 2012-05-01T16:25:39.730 に答える
0

私は主に Mongoid を使用しているため、ActiveRecord にはあまり詳しくありませんが、ここで答えを見つけることができると思います: http://guides.rubyonrails.org/active_record_querying.html#conditions

次のように、文字列条件を使用する必要があると思いますwhere("planned is not null")

于 2012-05-01T09:59:35.837 に答える