質問編集履歴

4

解決したため

2021/02/02 02:37

投稿

yjy00
yjy00

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,4 @@
2
2
 
3
3
 
4
4
 
5
- フリマアプリのクローンサイトを作っています。
6
-
7
5
  現在は通知機能を実装中です。

3

解決したため

2021/02/02 02:37

投稿

yjy00
yjy00

スコア1

test CHANGED
@@ -1 +1 @@
1
- フリマアプリ 通知機能 コメントの通知データが保存ができない
1
+ 通知機能 コメントの通知データが保存ができない
test CHANGED
File without changes

2

解決したため

2021/02/02 02:37

投稿

yjy00
yjy00

スコア1

test CHANGED
File without changes
test CHANGED
@@ -5,195 +5,3 @@
5
5
  フリマアプリのクローンサイトを作っています。
6
6
 
7
7
  現在は通知機能を実装中です。
8
-
9
-
10
-
11
- こちらを参考にしています。
12
-
13
- [参考にしている記事](https://qiita.com/nekojoker/items/80448944ec9aaae48d0a)
14
-
15
-
16
-
17
- ### コメントのデータ保存ができない
18
-
19
-
20
-
21
- likeに関しては、保存できるようになったのですが、commentについての通知が保存できません。
22
-
23
-
24
-
25
- ### 該当のソースコード
26
-
27
-
28
-
29
-
30
-
31
- 商品モデルのコメント通知作成メソッド
32
-
33
- ```ruby
34
-
35
- def create_notification_comment!(current_user, chat_id)
36
-
37
- temps_ids = Chat.select(:user_id).where(good_id: id).where.not(user_id: current_user.id).distinct
38
-
39
- temps_ids.each do |temps_id|
40
-
41
- save_notification_comment!(current_user, chat_id, temp_id['user_id'])
42
-
43
- end
44
-
45
- save_notification_comment!(current_user, chat_id, user_id) if temps_ids.blank?
46
-
47
- end
48
-
49
-
50
-
51
- def save_notification_comment!(current_user, chat_id, visited_id)
52
-
53
- notification = current_user.active_notifications.new(
54
-
55
- good_id: id,
56
-
57
- chat_id: chat_id,
58
-
59
- visited_id: visited_id,
60
-
61
- action: 'chat'
62
-
63
- )
64
-
65
- if notification.visiter_id == notification.visited_id
66
-
67
- notification.checked = true
68
-
69
- end
70
-
71
- notification.save if notification.valid?
72
-
73
- end
74
-
75
- ```
76
-
77
- 通知コントローラーのindexアクション
78
-
79
- ```ruby
80
-
81
- def index
82
-
83
- @notifications = current_user.passive_notifications.page(params[:page]).per(5)
84
-
85
- @notifications.where(checked: false).each do |notification|
86
-
87
- notification.update_attributes(checked: true)
88
-
89
- end
90
-
91
- end
92
-
93
- ```
94
-
95
- likeコントローラーのindexアクション
96
-
97
- ```ruby
98
-
99
- def create
100
-
101
- @like = current_user.likes.create(good_id: params[:good_id])
102
-
103
- good = Good.find(params[:good_id])
104
-
105
- good.create_notification_like!(current_user)
106
-
107
- redirect_back(fallback_location: "/goods/#{@good_id}/likes")
108
-
109
- end
110
-
111
- ```
112
-
113
- マイグレーションファイル
114
-
115
- ```ruby
116
-
117
- class CreateNotifications < ActiveRecord::Migration[6.0]
118
-
119
- def change
120
-
121
- create_table :notifications do |t|
122
-
123
- t.integer :visiter_id, null: false
124
-
125
- t.integer :visited_id, null: false
126
-
127
- t.integer :good_id
128
-
129
- t.integer :chat_id
130
-
131
- t.string :action, default: '', null: false
132
-
133
- t.boolean :checked, default: false, null: false
134
-
135
-
136
-
137
- t.timestamps
138
-
139
- end
140
-
141
- end
142
-
143
- end
144
-
145
-
146
-
147
- ```
148
-
149
- notification.rb
150
-
151
- ```ruby
152
-
153
- class Notification < ApplicationRecord
154
-
155
-
156
-
157
- default_scope -> {order(created_at: :desc)}
158
-
159
-
160
-
161
- belongs_to :good, optional: true
162
-
163
- belongs_to :chat, optional: true
164
-
165
- belongs_to :visiter, class_name: 'User', foreign_key: 'visiter_id', optional: true
166
-
167
- belongs_to :visited, class_name: 'User', foreign_key: 'visited_id', optional: true
168
-
169
- end
170
-
171
- ```
172
-
173
- chatコントローラのcreateアクション
174
-
175
- ```ruby
176
-
177
- def create
178
-
179
- @chat = Chat.new(chat_params)
180
-
181
- @good = Good.find(params[:good_id])
182
-
183
- if @chat.save
184
-
185
- ActionCable.server.broadcast 'chat_channel', { content: @chat, name: @chat.user.nickname }
186
-
187
- @good.create_notification_comment!(current_user, @chat.id)
188
-
189
- else
190
-
191
- render 'goods/show'
192
-
193
- end
194
-
195
- end
196
-
197
- ```
198
-
199
- 初めての質問のため、情報が不足しているとうの不手際があるかと思いますが、ご教示いただければ幸いです。

1

コードの追加

2021/02/02 02:36

投稿

yjy00
yjy00

スコア1

test CHANGED
File without changes
test CHANGED
@@ -170,6 +170,30 @@
170
170
 
171
171
  ```
172
172
 
173
+ chatコントローラのcreateアクション
173
174
 
175
+ ```ruby
176
+
177
+ def create
178
+
179
+ @chat = Chat.new(chat_params)
180
+
181
+ @good = Good.find(params[:good_id])
182
+
183
+ if @chat.save
184
+
185
+ ActionCable.server.broadcast 'chat_channel', { content: @chat, name: @chat.user.nickname }
186
+
187
+ @good.create_notification_comment!(current_user, @chat.id)
188
+
189
+ else
190
+
191
+ render 'goods/show'
192
+
193
+ end
194
+
195
+ end
196
+
197
+ ```
174
198
 
175
199
  初めての質問のため、情報が不足しているとうの不手際があるかと思いますが、ご教示いただければ幸いです。