ActiveRecordクエリで空の文字列をテストする

Railsアプリケーションで、ActiveRecord where
メソッドを使用してプロパティがnilまたは空であるかどうかを確認する最もクリーンな方法は何ですか?

これはうまくいきますが、それを行うにはより良い、組み込みの方法があるはずです:

@items = Item.where :context => nil || ''

検索に「どこ?」などの語句が含まれていると、Google-fuで多くのことをするのは難しいです。

ベストアンサー

あなたが持っているものはうまくいかないでしょう。

@items = Item.where context: nil || ''

本当に評価する:

@items = Item.where context: ''

したがって、このメソッドを使用して contextnil
に設定したアイテムは見つかりませんでした。

サイドノート

thing ||を使うこのように他のは動作しません。 item ==
‘test’の場合、を書くことはできません|| 'something' であり、
item'何か' である場合に動作すると考えます。
item'test'
の場合にのみ機能します。このようなものを動作させるには、item == ‘test’の場合にを記述する必要があります。
item == '何か'
。これは人間の話ではありませんが、コンピュータの読み方です。

メインイベントに戻る

動作するクエリを作成する1つの方法は次のとおりです。

Item.where("context = ? or context = ?", nil, '')

contextnil または context
であるすべての項目を '' とします。

これは動作しますが、特に “Rails-y”とはみなされません。より良い方法は次のとおりです:

Item.where(context: [nil, ''])

context[nil、 '']
にあるすべての項目を検索します。


関連する質問

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です