3

如果填写了日期(如 in,不为空),您如何签入 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 列上执行“位置”。

谢谢。

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 的答案是我猜你正在寻找的。

Rails where 条件使用 NOT NULL

于 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 回答