如果填写日期(如,非空),如何检查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”。
感谢。
答案 0 :(得分: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
答案 1 :(得分:2)
您可以查看此类似问题以获得答案。 Ryan Bigg的回答是我猜你正在寻找的。 p>
答案 2 :(得分:0)
我不太熟悉ActiveRecord因为我主要使用Mongoid,但我认为你可以在这里找到你的答案:http://guides.rubyonrails.org/active_record_querying.html#conditions
我猜你必须使用字符串条件,如where("planned is not null")