ruby-on-rails – Rails – 使用nil进行条件查询?

有什么想法这有什么不对吗?
@contacts = current_user.contacts.where("fname = ? OR lname = ?",nil,nil)

我想要所有联系人,其中fname或lname为空.

这是它在日志中显示内容,不确定为什么它没有获取记录.

Contact Load (0.6ms)  SELECT "contacts".* FROM "contacts" WHERE ("contacts".user_id = 2) AND (fname = NULL OR lname = NULL)

思考?

谢谢

解决方法

如果你想要空(意味着一个空字符串,但实际上不是null),那么使用一个空字符串:
@contacts = current_user.contacts.where("fname = ? OR lname = ?","","")

否则,如果您真的想要空值,则需要使用is null措辞:

@contacts = current_user.contacts.where("fname is null OR lname is null")

您还可以使用:lname => nil,但该格式不能用于OR查询.注意“lname =?”,nil和:lname =>之间的差异.零:

@contacts = Contact.where("lname = ?",nil).to_sql
# => SELECT "contacts".* FROM "contacts" WHERE (lname = NULL)

@contacts = Contact.where(:lname => nil).to_sql
# => SELECT "contacts".* FROM "contacts" WHERE "contacts"."lname" IS NULL

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...