質問編集履歴

1

不足項目の追記をしました。

2021/01/07 13:15

投稿

ssssyyyy
ssssyyyy

スコア26

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,13 @@
4
4
 
5
5
 
6
6
 
7
+ **views/participant_tasks/index.html.erb**
8
+
9
+
10
+
11
+
12
+
7
- **view**
13
+ ```ruby
8
14
 
9
15
 
10
16
 
@@ -12,62 +18,60 @@
12
18
 
13
19
 
14
20
 
21
+ <% @purpose.tasks.each do |task| %>
22
+
23
+ <div class="mt-2">
24
+
25
+
26
+
27
+ ↓status更新
28
+
29
+
30
+
31
+ <%= form_for([@purpose, current_user.participants.find_by(purpose_id: @purpose.id), current_user.participants.find_by(purpose_id: @purpose.id).participant_tasks.find_by(task_id: task.id)]) do |form| %>
32
+
33
+ <%= task.list %>:
34
+
35
+ <%= task.percent %>%
36
+
37
+ <%= form.select :status, ParticipantTask.statuses_i18n.map{|key, value| [ParticipantTask.statuses_i18n[key], key]} %>
38
+
39
+ <%= form.submit "更新", class: 'btn btn-secondary' %>
40
+
41
+ <% end %>
42
+
43
+ </div>
44
+
45
+ <% end %>
46
+
47
+
48
+
49
+ ↓count
50
+
51
+
52
+
53
+ <% @purpose.tasks.each do |task| %>
54
+
55
+ <div class="mt-2">
56
+
57
+ <%= task.percent %>%完了:<%= @purpose.participants.find_by(purpose_id: @purpose.id).participant_tasks.where(task_id: task.id, status: "done").count %>人
58
+
59
+ </div>
60
+
61
+ <% end %>
62
+
63
+
64
+
65
+ ```
66
+
67
+
68
+
69
+ **controller(participant_tasks_controller.rb)**
70
+
71
+
72
+
15
73
  ```ruby
16
74
 
17
- <% @purpose.tasks.each do |task| %>
18
-
19
- <div class="mt-2">
20
-
21
-
22
-
23
- ↓status更新
24
-
25
-
26
-
27
- <%= form_for([@purpose, current_user.participants.find_by(purpose_id: @purpose.id), current_user.participants.find_by(purpose_id: @purpose.id).participant_tasks.find_by(task_id: task.id)]) do |form| %>
28
-
29
- <%= task.list %>:
30
-
31
- <%= task.percent %>%
32
-
33
- <%= form.select :status, ParticipantTask.statuses_i18n.map{|key, value| [ParticipantTask.statuses_i18n[key], key]} %>
34
-
35
- <%= form.submit "更新", class: 'btn btn-secondary' %>
36
-
37
- <% end %>
38
-
39
- </div>
40
-
41
- <% end %>
42
-
43
-
44
-
45
- ↓count
46
-
47
-
48
-
49
- <% @purpose.tasks.each do |task| %>
50
-
51
- <div class="mt-2">
52
-
53
- <%= task.percent %>%完了:<%= @purpose.participants.find_by(purpose_id: @purpose.id).participant_tasks.where(task_id: task.id, status: "done").count %>人
54
-
55
- </div>
56
-
57
- <% end %>
58
-
59
-
60
-
61
- ```
62
-
63
-
64
-
65
- **controller**
66
-
67
-
68
-
69
- ```ruby
70
-
71
75
 
72
76
 
73
77
  def index
@@ -87,3 +91,143 @@
87
91
 
88
92
 
89
93
  ![イメージ説明](cf9577083fcf48f3609fbb3871d86d9e.png)
94
+
95
+
96
+
97
+
98
+
99
+ ###追記
100
+
101
+
102
+
103
+ 1、 関係するmodelのcode。関連定義の所
104
+
105
+
106
+
107
+ ```Ruby
108
+
109
+
110
+
111
+ class Purpose < ApplicationRecord
112
+
113
+
114
+
115
+ belongs_to :user
116
+
117
+
118
+
119
+ has_many :tasks
120
+
121
+ accepts_nested_attributes_for :tasks, allow_destroy: true
122
+
123
+
124
+
125
+ has_many :participants
126
+
127
+ has_many :participant_users, through: :participants, source: 'user'
128
+
129
+
130
+
131
+ end
132
+
133
+
134
+
135
+ ```
136
+
137
+
138
+
139
+ ```Ruby
140
+
141
+
142
+
143
+ class Participant < ApplicationRecord
144
+
145
+ belongs_to :user
146
+
147
+ belongs_to :purpose
148
+
149
+
150
+
151
+ has_many :participant_tasks
152
+
153
+ end
154
+
155
+ ```
156
+
157
+
158
+
159
+ ```Ruby
160
+
161
+ class Task < ApplicationRecord
162
+
163
+ belongs_to :purpose
164
+
165
+
166
+
167
+ has_many :participant_tasks
168
+
169
+ end
170
+
171
+ ```
172
+
173
+
174
+
175
+
176
+
177
+ ```Ruby
178
+
179
+
180
+
181
+ ※TaskとParticipantの中間テーブル
182
+
183
+
184
+
185
+ class ParticipantTask < ApplicationRecord
186
+
187
+ enum status:{incomplete: 0,done: 1}
188
+
189
+ #incomplete:未完了, done:完了
190
+
191
+
192
+
193
+ belongs_to :participant
194
+
195
+ belongs_to :task
196
+
197
+ end
198
+
199
+
200
+
201
+ ```
202
+
203
+
204
+
205
+ **アプリ概要**
206
+
207
+ ・ユーザーは目的(例:●●本を読破する!)のコミュニティを作成できる。
208
+
209
+ ・目的作成時に、目的の進捗状況を管理する為タスク(例:第一章完了)を設定できる。※目的モデルとタスクモデルを1:多で設定
210
+
211
+ ・会員登録しているユーザーは作成されている目的に参加が出来る。
212
+
213
+ ・ユーザー同士で参加している目的のタスクの進捗(完了・未完了)を確認し合える。
214
+
215
+
216
+
217
+ **現状解決できない内容としてカウント出来るのが、目的を作成したユーザーのみとなっている状態です。**
218
+
219
+
220
+
221
+
222
+
223
+ 2、 <%= task.percent %>%完了:<%= @purpose.participants.find_by.... の行の@purpose.participants.find_by....は何を求めようとしているのか、説明してください(絞り込み条件も)
224
+
225
+ →`@purpose(目的)`に`participants(参加)`している`purpose_id`を絞り込み、さらに`participant_tasks`で該当の`task_id`が`status: "done"`になった件数を絞り込んでいます。
226
+
227
+
228
+
229
+
230
+
231
+ **[ER図]**
232
+
233
+ ![イメージ説明](8630828c8d19c04fa479685e35ee11f1.png)