質問編集履歴
8
fix
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
よく銀行の例えが用いられますが、ネットを調べてるとあくまで一つのレコードの更新時に、複数のプロセスから更新されないようにロックする話しか出てこないんですんね。
|
22
22
|
(例: [銀行の特定の人の口座レコード](https://reona.dev/posts/20210616))
|
23
23
|
|
24
|
-
今回のケース、複数の会社から
|
24
|
+
今回のケース、複数の会社から採用される場合というのは、応募のレコードはあくまでそれぞれ別のレコードなんですよね。
|
25
25
|
|
26
26
|
そこで以下のように排他ロックを追加すればよいのかなと思いました。
|
27
27
|
```ruby
|
7
f
test
CHANGED
File without changes
|
test
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
# ユーザーの全application(応募)をロックします。
|
30
30
|
Application.lock.where(user_id: user_id ).lock('FOR UPDATE NOWAIT')
|
31
31
|
|
32
|
-
check(user)
|
32
|
+
check(user)
|
33
33
|
|
34
34
|
# 中略しますが、いろんな処理をする
|
35
35
|
|
6
fix
test
CHANGED
File without changes
|
test
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
```ruby
|
28
28
|
ActiveRecord::Base.transaction do
|
29
29
|
# ユーザーの全application(応募)をロックします。
|
30
|
-
Application.lock.where(user_id: user_id ).lock('FOR UPDATE NOWAIT')
|
30
|
+
Application.lock.where(user_id: user_id ).lock('FOR UPDATE NOWAIT')
|
31
31
|
|
32
32
|
check(user) # ユーザーを雇用する、具体的にはapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
|
33
33
|
|
5
fix
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
超シンプルに言います。
|
2
2
|
- 求人サービスだとします
|
3
|
-
- ユーザーは法律の関係で週に40時間未
|
3
|
+
- ユーザーは法律の関係で週に40時間未満しか働けないので、応募採用時に40時間未満かチェックしないといけない
|
4
4
|
|
5
5
|
|
6
6
|
以下採用時の処理です。
|
4
fix
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
# 中略しますが、いろんな処理をする
|
12
12
|
|
13
|
-
employ(user) # ユーザーを雇用する、具体的にはapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
|
13
|
+
employ(user) # ユーザーを雇用する、具体的にはuserに紐づくapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
|
14
14
|
end
|
15
15
|
```
|
16
16
|
|
@@ -33,7 +33,7 @@
|
|
33
33
|
|
34
34
|
# 中略しますが、いろんな処理をする
|
35
35
|
|
36
|
-
employ(user) # ユーザーを雇用する、具体的にはapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
|
36
|
+
employ(user) # ユーザーを雇用する、具体的にはuserに紐づくapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
|
37
37
|
end
|
38
38
|
```
|
39
39
|
|
3
fix
test
CHANGED
File without changes
|
test
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
```ruby
|
28
28
|
ActiveRecord::Base.transaction do
|
29
29
|
# ユーザーの全application(応募)をロックします。
|
30
|
-
Application.lock.where(user_id: user_id ).lock
|
30
|
+
Application.lock.where(user_id: user_id ).lock('FOR UPDATE NOWAIT') # 勤務状況をロックする
|
31
31
|
|
32
32
|
check(user) # ユーザーを雇用する、具体的にはapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
|
33
33
|
|
2
fix
test
CHANGED
File without changes
|
test
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
|
32
32
|
check(user) # ユーザーを雇用する、具体的にはapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
|
33
33
|
|
34
|
-
# 中略しますが、
|
34
|
+
# 中略しますが、いろんな処理をする
|
35
35
|
|
36
36
|
employ(user) # ユーザーを雇用する、具体的にはapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
|
37
37
|
end
|
1
fix
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
このような
|
1
|
+
このような排他ロックの使い方は本来の使い方ではない?おかしいでしょうか?
|
test
CHANGED
File without changes
|