以下のような多体多のUserテーブルとGroupテーブルが存在したとき、ActiveRecord(もしくはSQL)で「roleが2(mall)なGroupを1つも持ってないUsers」を抽出したいのですが、どうしてもわからないので教えてください。下に記載したDBテーブルのデータだと空の配列が返ってくるイメージです。
(質問のために作ったコードとデータなので多少の粗は目をつむっていただけるとありがたいです)
どうぞよろしくお願いいたします。
DBテーブル
Userテーブル
id | name | role |
---|---|---|
1 | 田中 | 1 |
2 | 鈴木 | 1 |
Groupテーブル
id | name | role |
---|---|---|
1 | セブン | 1 |
2 | イオン | 2 |
UserGroupテーブル
id | user_id | group_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 2 |
Rails model
ruby
1class User < ApplicationRecord 2 extend Enumerize 3 enumerize :role, in {user: 0, admin: 1, store: 2} 4 5 has_many :group 6 has_many :groups, through: :user_groupes 7end
ruby
1class Group< ApplicationRecord 2 enumerize :role, in {store: 0, convenience_store: 1, mall: 2, greengrocer: 3} 3 4 has_many :user 5 has_many :users, through: :user_groupes 6end
ruby
1class UserGroup< ApplicationRecord 2 belongs_to :user 3 belongs_to :group 4end
モデルの関連付けのイメージ
ruby
1> User.first.groupes 2[<group id: 1, role: 1>, <group id: 2, role: 2>] 3 4> User.second.groupes 5[<group id: 2, role: 2>]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 17:42