Any ideas what's wrong with this?
@contacts = current_user.contacts.where("fname = ? OR lname = ?", nil, nil)
I want all contacts where either the fname or lname is empty.
Here is what it shows in the logs, not sure why it's not getting the records.
Contact Load (0.6ms) SELECT "contacts".* FROM "contacts" WHERE ("contacts".user_id = 2) AND (fname = NULL OR lname = NULL)
Thoughts?
Thanks
If you want empty (meaning a blank string, but not actually null), then use an empty string:
@contacts = current_user.contacts.where("fname = ? OR lname = ?", "", "")
Otherwise, if you truly want the null values, you need to use the is null
wording:
@contacts = current_user.contacts.where("fname is null OR lname is null")
You can also use :lname => nil
instead, but that format can't be used for OR queries. Note the different between "lname = ?", nil
and :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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With