回答編集履歴
1
トランザクションに関して記載を修正
answer
CHANGED
@@ -5,13 +5,16 @@
|
|
5
5
|
|
6
6
|
> 2,DBを操作しないメールを送信するコードもトランザクション内であるので一個のトランザクション内に書くのか。
|
7
7
|
|
8
|
-
トランザクションはDBに関する話なので、メールを送るだけならトランザクションである必要はありません
|
8
|
+
トランザクションはDBに関する話なので、メールを送るだけならトランザクションである必要はありません。
|
9
|
-
|
9
|
+
もちろんトランザクション内に書いても処理の順番が正しければ意図通りに動きます。
|
10
10
|
|
11
|
-
今回はcreate!(), update!()の後に書いているので、
|
11
|
+
今回提示されているコードに関してはcreate!(), update!()の後にメール送信を書いているので、
|
12
|
-
成功した時しかメール送信処理に来ないの
|
12
|
+
成功した時しかメール送信処理に来ないため、保存に失敗したのにメールが飛ぶといった事はありません。
|
13
|
+
(ビックリマーク付きのメソッドを使っているため、保存に失敗したら例外が発生するため)
|
13
14
|
|
15
|
+
でも、明確にトランザクションとメール送信は分けたほうがコードとしては分かりやすいです。
|
14
16
|
|
17
|
+
|
15
18
|
> 3,上記コードのエラーを示すレスポンスに関して、 result = { error: { message: e.message } } とerrorの中に二重構造にした理由を知りたいです。 これはフロント側で何か使うために2重の構造にしているのか、調べてもあまり出てこなく、気になっております。
|
16
19
|
|
17
20
|
|