检查日期不为空?(rails,arel)

Rog*_*ger 2 arel ruby-on-rails-3

如果填写日期(如,非空),你如何检查Rails3(有或没有Arel)?我知道你可以通过使用:

obj.where('PLANNED IS NOT NULL')
Run Code Online (Sandbox Code Playgroud)

但是没有使用SQL是可能的吗?

// SQL 
SELECT * FROM projecttasks WHERE planned IS not null
Run Code Online (Sandbox Code Playgroud)

我试过了:

# all tasks which have a date
tasks = Projecttask.where(:planned => !nil)
Run Code Online (Sandbox Code Playgroud)

要么

# all task with no planned date (sql: is null)
Projecttask.where(:planned => nil)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.一般来说,如何在NULL和NON NULL列上执行'where'.

谢谢.

Tho*_*emm 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
Run Code Online (Sandbox Code Playgroud)