1

これが初心者の質問である場合は申し訳ありません.Googleを検索しても何も見つかりません.おそらく正しい用語を使用していませんが、ここに....

名前付きのユーザーモデルがあり、「ジョン」を見つけたい場合は、できることがわかっています

User.find_by_name 'john'. 

偉大な。

しかし、取得したい名前のリストがあるとします。リスト内の名前ごとに find_by を実行すると、複数の SQL クエリが生成されます。または、User.all を実行して、リストに対してメモリ内の結果をフィルター処理することもできます。

生のSQLで私が書くことができるとき、どちらも非常に高価で、あまりスケーラブルではないようです:

select * from users where name in ('john', 'peter', 'susan', ... );

そして、1 回のクエリですべてを取得します。

私はトリックを見逃していますか、それともアクティブレコードもこれを行うことができますか? そうでない場合、Rails 3アプリケーション内からこれを行うための推奨される最良の方法は何ですか?

4

2 に答える 2

2

これを試して

names = ['John', 'Mary']
users = User.where(name: names)
于 2012-06-27T10:59:45.570 に答える
0

User.find_all_by_name(names)も機能しますが、現在は古い学校と見なされている可能性があります。

于 2012-06-27T13:53:49.510 に答える