質問編集履歴

8

fix

2022/03/11 05:39

投稿

thesnowman
thesnowman

スコア154

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

2022/03/11 03:37

投稿

thesnowman
thesnowman

スコア154

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) # ユーザーを雇用する、具体的にはapplication(応募)というレコードのstatusカラムを:employedにする等の処理が行われる
32
+ check(user)
33
33
 
34
34
  # 中略しますが、いろんな処理をする
35
35
 

6

fix

2022/03/11 03:35

投稿

thesnowman
thesnowman

スコア154

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

2022/03/11 02:29

投稿

thesnowman
thesnowman

スコア154

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  超シンプルに言います。
2
2
  - 求人サービスだとします
3
- - ユーザーは法律の関係で週に40時間未リスト満しか働けないので、応募採用時に40時間未満かチェックしないといけない
3
+ - ユーザーは法律の関係で週に40時間未満しか働けないので、応募採用時に40時間未満かチェックしないといけない
4
4
 
5
5
 
6
6
  以下採用時の処理です。

4

fix

2022/03/10 23:00

投稿

thesnowman
thesnowman

スコア154

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

2022/03/10 22:59

投稿

thesnowman
thesnowman

スコア154

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
 

2

fix

2022/03/10 22:59

投稿

thesnowman
thesnowman

スコア154

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

2022/03/10 22:58

投稿

thesnowman
thesnowman

スコア154

test CHANGED
@@ -1 +1 @@
1
- このような悲観的ロックの使い方は本来の使い方ではない?おかしいでしょうか?
1
+ このような排他ロックの使い方は本来の使い方ではない?おかしいでしょうか?
test CHANGED
File without changes