前提・実現したいこと
railsでWebアプリケーションを作っています。
N+1問題に遭遇しincludesを使い始めたのですが、
以下の実現方法が分からず質問させていただきました。
- モデルがGroupとUserと2つある
- Userはどれか一つのGroupに所属する(関連付け済み)
- Group.includes(:user)として両テーブルを読みこむ
- この時、子テーブルであるuserは性別が男性のみを読み込みたい
- 親テーブルは両方読み込みたい
Groupモデル
id | 名前 |
---|---|
1 | グループA |
2 | グループB |
Userモデル
id | 名前 | グループid | 性別 |
---|---|---|---|
1 | 太郎 | 1 | 男 |
2 | 花子 | 2 | 女 |
3 | 次郎 | 1 | 男 |
発生している問題・エラーメッセージ
検索すると、親テーブルの絞り込みに子テーブルを利用するという内容は出てきますが、
親テーブルは絞り込まず、子テーブルのみを絞り込む方法を探すことができませんでした。
(探せていても実現できていなかったか)
以下を実行すると、GroupAしか抽出できず、親テーブルであるGroupはAもBも両方出力したいです。
該当のソースコード
※簡略化しております
Rails ##controller @groups = Group.includes(:users).where(性別: 男).references(:users) ##view @groups.each do |group| group.name end
試したこと
scopeなど試してみようと思いましたがうまくいかず、アドバイスいただけますと幸いです。
補足情報(FW/ツールのバージョンなど)
Railsのバージョンは5.2.2です。
DBはmySQL、cloud9で開発しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/29 06:51