teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/06/24 06:08

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -1,4 +1,24 @@
1
1
  色々あります
2
2
  1. `current_user.groups` とすると属しているグループが得られるので、該当するgroupがあるか調べる
3
3
  1. `current_user.group_users`として得られたgroup_user に「グループのid」のものが有るか調べる
4
- 1. `GroupUser.find_by(group_id: グループのid,user_id: current_user.id)`としてデータがあるか調べる
4
+ 1. `GroupUser.find_by(group_id: グループのid,user_id: current_user.id)`としてデータがあるか調べる
5
+
6
+ 追記
7
+ ```
8
+ def transition_limit
9
+ correct_user = current_user.group_users.select('group_id') # (1)
10
+ selected_group = Group.find(params[:group_id])
11
+ selected_group_id = selected_group.id
12
+ # binding.pry
13
+ unless correct_user.include?(selected_group_id)
14
+ redirect_to root_path, notice: '「参加する」ボタンを押し、グループに参加してください'
15
+ end
16
+ end
17
+ ```
18
+ (1) はいけません。current_userを壊してますし、得られるのが group_user なので命名が悪い
19
+ group_id が「属しているかどうか調べるgroupのid」ですね?
20
+ ですと
21
+ `unless current_user.group_users.select{|gu| gu.group_id == group_id).present?`
22
+ ですね。
23
+ この方がスマートかな
24
+ `unless current_user.group_users.find_by(group_id: group_id)`