2013-12-22 9 views
6

У меня есть модель пользователя с опциональной интеграцией Twitter.Rails4/Rails5 найти модель Где нет

Я добавил атрибут «имя пользователя», который заполняется только тогда, когда пользователь завершил аутентификацию twitter.

Я хочу найти всех пользователей с интеграцией. Каков наилучший способ найти все объекты, где есть атрибут, или где он не нуль?

ответ

19

самый простой способ я нашел:

User.where.not(username: nil)

Я хотел бы видеть ответы других

+0

Прошу прощения, но вы не правы, по крайней мере, как вы сформулировали свой вопрос «где он не пуст». Вам нужно использовать 'User.where.not (имя пользователя: '')' Почему? В вашем запросе будут игнорироваться значения non-nil (или NULL), * not * empty (aka blank). Тонкая разница, но важная. Например, если у вас есть текстовый столбец, и пользователь удаляет весь текст и сохраняет его. Он больше не «nil» (NULL), он пуст (как в пустой строке). Ваш запрос выше будет включать эту запись. – Karl

+0

Спасибо @Karl i обновил текст в вопросе. поле не обновляется пользователями, только путем интеграции и проверки oauth не позволяет пустым. –

0

вы также можете сделать просто написать SQL в где заявление:

User.where("username <> nil") 
+0

Ответ Блэра Андерсона определенно лучший способ сделать это. Если у вас есть хранилище данных, которое не понимает оператор '<>', вы получите сообщение об ошибке. 'where.not' является агностиком данных, переводящим то, что он * * понимает. –

 Смежные вопросы

  • Нет связанных вопросов^_^