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