1

たとえば、2つのモデルがあります。

購入(belongs_to:users)ユーザー(has_many:purchases)

少なくとも1回購入したすべてのユーザーを選択したい。

SQLでは次のように記述します。

SELECT * FROM `users` WHERE `id` IN (SELECT DISTINCT `buyer_id` FROM  `purchases`)

そしてもう1つの質問:アレルをカバーする完全なドキュメントや本はありますか?

4

3 に答える 3

2

うーん、私の質問に答えたいのですが... :)

buyers=purchases.project(:buyer_id).group(purchases[:buyer_id]) #<-- all buyers
busers=users.where(users[:id].in(buyers))  #<--answer
于 2010-11-05T14:19:09.317 に答える
0

Railsガイドには、ARelに関する非常に優れたドキュメントがあります。

http://guides.rubyonrails.org/active_record_querying.html#conditions

Rails APIは、よりあいまいなオプションのいくつかにも非常に役立ちます。「railsapi」で特定の用語をグーグルで検索すると、最初に表示されます。

于 2010-11-05T16:03:37.740 に答える
0

上記のコードがネストされたクエリを発行するとは思わない。代わりに、2つの別々のSQLクエリを発行するようです。同等の速度(パフォーマンスへの関心度によって異なります)がある場合もありますが、サーバーへのラウンドトリップが2回あるため、ネストされたクエリと同じ利点は得られません。

于 2011-10-03T15:30:42.343 に答える