私は基本的な疑問を持っています。私のrails
アプリでは、user
にはscores
がたくさんあります。ユーザーのアクティブな関係のすべてのスコアを取得する方法はありますか。私はuser.scores(明らかに)をすることができますが、ユーザがユーザグループであれば、私はusers.scores
のような何かをする必要があります。これは明らかに正しくありません。Rails:すべてのhas_manyオブジェクトが親のアクティブな関係に関連付けられていることを取得する
答えて
あなたはこれが
select * from scores where user_id in (select *.id from users where ..)
ようなSQLを構築します
Score.where(user: users)
を使用することができますが、以下を試してみましたか?
@users.collect(&:scores).flatten!
私は受け入れられた答えがより効率的だと思います。私が間違っていると私を訂正してください。 – GhostRider
どちらも同じ 'sql'を生成します。どちらを使用するかは、あなたのシナリオや他のコンテキストに依存します。どちらの方法でも、私はこのロジックをテスト容易性とメンテナンスのためのモデルに移行します。 – Dharam
あなたは@Dharamが正しくありません。あなたのコードはN + 1のクエリを生成します。しかし、 'includes'を使って改善することができます:' @ users.includes(:scores).collect(&:スコア).flatten! ' - これはわずか2クエリです。 – MikDiet
- 1. Railsのhas_manyの関連付け:私は、次の2つの関連付けを持って、関連するオブジェクト
- 2. Rails 4、has_many関連 - 関連付けられたオブジェクトを見つける
- 3. Rails has_many:親の "show"ビューでの関連付けと関連モデルの作成
- 4. has_manyオブジェクトが関連付けられていないオブジェクトをすべて検索します
- 5. レールにhas_manyの関連付けをすべて取得します
- 6. Railsアクティブなレコード数の関連付け
- 7. has_manyとbelongs_toのRailsモデルの関連付けを作成する
- 8. コアデータ - 関係にないすべてのオブジェクトを取得する
- 9. アクティブな関係:関連付けを介してレコードを取得していますか?
- 10. Rails 5内のすべてのユニークな関連付けを取得します
- 11. スレッドに関連付けられたオブジェクトを取得するC#
- 12. has_manyからレコードを削除する単一のクエリとのRails関連付け
- 13. 別のオブジェクトのインスタンスを持つすべてのオブジェクトを選択する方法(has_manyとhas_oneの関連付け)?
- 14. Railsに多数の関係が関連付けられて保存されています
- 15. Railsにhas_oneとhas_manyの関連付けをしました
- 16. 外部キーに関連付けられていないプライマリキーレコードを取得する
- 17. SQLで親に関連するすべてのノードを取得
- 18. ユニファイドでプレハブのオブジェクトが関連付けられている
- 19. has_manyとbelongs_toの関連付けのラジオボタン
- 20. RSpecとのhas_manyの関連付け
- 21. Rails - 関連付けられたレコードのデータを取得
- 22. Rails "foreign_key"との "has_many"関連
- 23. 関連付けられた関係オブジェクトの読み込みを避ける
- 24. 各製品に関連付けられているすべてのカテゴリを取得するためのPHPループ
- 25. Rails3スコープとhas_manyの関連付け
- 26. Railsのhas_manyと外部キーとの関連付けを拡張する
- 27. Ruby on Rails 4 - ユーザーグループに対してhas_many関連付けを取得するには?
- 28. Rails:フォームからのオブジェクトIDの配列によるhas_many関連
- 29. モデルフィルタクエリに基づいてすべての関連オブジェクトを取得
- 30. Railsのモデルにhas_many、関係
グッドマン。多くのありがとう – GhostRider