Rails - 使用nil进行条件查询?

任何想法这是什么问题?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) 

想法?

感谢

回答:

如果你想空(意思是一个空字符串,但实际上没有空),然后用一个空字符串:

@contacts = current_user.contacts.where("fname = ? OR lname = ?", "", "") 

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

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

您还可以使用:lname => nil代替,但格式不能用于或查询。注意:"lname = ?", nil:lname => nil之间的不同:

@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

以上是 Rails - 使用nil进行条件查询? 的全部内容, 来源链接: utcz.com/qa/263924.html

回到顶部