1

私はルビー1.9.3p194とレール3.2.5を使用しています

@authors = Author.all

データベースからすべての名前を出力することで正常に動作します。だが

@authors = Author.where("name like ?", "%#{params[:q]}%")

動かない。私はMongodbを使用しています。Rを入力したときに名前(Ram)を出力したいのですが、どうすればいいですか?


この方法では、フィールド:nameからのみparams [:q]を検索できます。このparams[:q]をテキストフィールド:role、:emailに一度に検索したいような他のフィールド名を追加するにはどうすればよいですか?使用しました|| しかし、それはエラーを与えます。コメントで書く必要がありますが、コメントリストが長いので。ここでこの質問をします。そのために残念。

4

1 に答える 1

4

MongoDBは、SQLのように「LIKE」クエリを使用しません。正規表現を使用できます: http ://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions

特定の問題を解決するには、を使用できますが @authors = Author.where(name: /#{params[:q]}/)、これがセキュリティの問題である可能性があるかどうかは完全にはわかりません。

于 2012-08-20T07:49:39.293 に答える