0

ここでモデルの私のコードは

def self.search(search)
    if search
     where(name: /#{Regexp.escape(search)}/i)
    else
      scoped
    end
  end

今、別のフィールドを追加して、次のように検索したい

where(price: /#{Regexp.escape(search)}/i)

したがって、私のクエリは次のような2つのフィールドを検索する必要があります

 where(name: /#{Regexp.escape(search)}/i) (or)  where(price: /#{Regexp.escape(search)}/i)

またはのようにmongodbにこの2つのフィールドを追加する方法。作業例は受け入れられます。私はmongodbについての知識が少ないので。

4

2 に答える 2

1

Mongoid 3 を使用している場合は、次のようにクエリを記述できます。

self.or({name: /#{Regexp.escape(search)}/i}, {price: /#{Regexp.escape(search)}/i})

Mongoid 3 以外 (MongoMapper や Mongoid 2 など) を使用している場合は、名前とバージョン番号をお知らせください。

出典: Mongoid 3 の選択構文ドキュメントはこちらです。

于 2013-01-16T08:11:01.207 に答える
0

これを試して
where('$or' => [{"name" => "/#{Regexp.escape(search)}/i"}, {"price" => "/#{Regexp.escape(search)}/i"}])

于 2013-01-16T07:11:01.357 に答える