質問編集履歴

1

質問内容はわかりづらかったです。

2020/08/09 05:53

投稿

su-san-w
su-san-w

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,141 +1 @@
1
- こんにちは。超初心者です。(質問がおかしかったら申し訳ありません。)
2
-
3
-
4
-
5
- modelに記載したvalidateをクリアできない値をあえて入力して
6
-
7
- update_attributes!の例外を発生させまたが、
1
+ update_attributes!の例外捕捉てrescueに移動する方法
8
-
9
- rescueに移動できず、赤色の帯のページが表示されてしまいます。
10
-
11
-
12
-
13
- 想定では、update_attributes!で例外が発生すれば
14
-
15
- 自動的にrescueに移動ものかと思っていましたが、記述の誤りなのか不足なのか、認識の誤りなのか・・・
16
-
17
- 色々検索して試してみましたが、わかりませんでした。
18
-
19
-
20
-
21
- **
22
-
23
- if item[:start_at].blank? && item[:finish_at].blank?
24
-
25
- attendance.update_attributes!(item)
26
-
27
- **
28
-
29
-
30
-
31
- 宜しくお願いいたします。
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
- ```Ruby on Rails
42
-
43
-
44
-
45
- def update
46
-
47
- begin
48
-
49
- ActiveRecord::Base.transaction do
50
-
51
-
52
-
53
- attendances_set.each do |id, item|
54
-
55
- attendance = Attendance.find(id)
56
-
57
-
58
-
59
- if item[:start_at].blank? && item[:finish_at].blank?
60
-
61
- attendance.update_attributes!(item)
62
-
63
- elsif item[:start_at].present? && item[:finish_at].present?
64
-
65
-
66
-
67
- if item[:start_at] < item[:finish_at]
68
-
69
- attendance.update_attributes!(item)
70
-
71
-
72
-
73
- elsif item[:start_at] > item[:finish_at]
74
-
75
- flash[:danger] = "更新できませんでした。退社時刻は出社時刻より遅い時刻を指定してください。"
76
-
77
- redirect_to edit_user_work_path(@user.id) and return
78
-
79
- else
80
-
81
- flash[:danger] = "更新不可2。"
82
-
83
- redirect_to edit_user_work_path(@user.id)
84
-
85
- end
86
-
87
- elsif item[:start_at].present? && item[:finish_at].blank?
88
-
89
- flash[:danger] = "更新できませんでした。出社時刻のみの入力は更新できません。"
90
-
91
- redirect_to edit_user_work_path(@user.id) and return
92
-
93
- elsif item[:start_at].blank? && item[:finish_at].present?
94
-
95
- flash[:danger] = "更新できませんでした。退社時刻のみの入力は更新できません。。"
96
-
97
- redirect_to edit_user_work_path(@user.id) and return
98
-
99
- end
100
-
101
-
102
-
103
- end
104
-
105
- end
106
-
107
- flash[:info] = "1ヶ月分更新完了。"
108
-
109
- redirect_to user_works_path(@user.id)
110
-
111
-
112
-
113
- rescue ActiveRecord::RecordInvalid
114
-
115
- flash[:danger].now = "無効な入力があったため更新キャンセルした"
116
-
117
- redirect_to edit_user_work_path(@user.id) and return
118
-
119
- rescue
120
-
121
- flash[:danger].now = "無効な入力があったため更新キャンセルした2"
122
-
123
- redirect_to edit_user_work_path(@user.id) and return
124
-
125
- end
126
-
127
- end
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
- def attendances_set
136
-
137
- params.require(:user).permit(attendances: [:start_at, :finish_at, :note])[:attendances]
138
-
139
- end
140
-
141
- ```