属性、およびを持つUser
モデルがあります。username
email
name
username
とemail
はサインアップ時に必要ですが、必須ではありませんname
。
記入済みのすべてのユーザーを検索するクエリは何でしょうかname
(つまり、nil ではありません)。
クエリは少なくとも Rails 3.2 および 4.0 と互換性がある必要があります。
私は次の行で何かを考えています:
User.where(name: present?)
属性、およびを持つUser
モデルがあります。username
email
name
username
とemail
はサインアップ時に必要ですが、必須ではありませんname
。
記入済みのすべてのユーザーを検索するクエリは何でしょうかname
(つまり、nil ではありません)。
クエリは少なくとも Rails 3.2 および 4.0 と互換性がある必要があります。
私は次の行で何かを考えています:
User.where(name: present?)
データベース内の空の値は、特別な値を取得しますNULL
。が設定されているかどうかをテストするには、特別なコンパレータIS NULL
またはを使用しIS NOT NULL
ます。
その後、空の文字列が入力された可能性がまだ残っているため、完全なテストは次のようになります。
@users = User.where("name is NOT NULL and name != ''")
[Rails 4+ 用に更新]
Rails 4以降、次のように書くことができます:
User.where.not(name: [nil, ""])
これにより、同じクエリが生成されます。素晴らしい :)
NOT SQL クエリは where.not で作成できます
@users = User.where.not(name: nil)
これを試して:
User.where("name IS NOT NULL AND name != ?", "")
@nathavandaのコメントに従って回答を編集しました。私の意見では、彼の回答は受け入れられるべきです。
You can simply do this:
User.where.not(name: '')
の性質上、isまたは空文字列のnot
レコードは含まれません。との詳細については、この記事を参照してください。name
nil
not
nil