質問編集履歴
1
質問を少々簡潔にする
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,15 +5,17 @@
|
|
5
5
|
ただし、残高を記録しているモデルと取引額を記録しているモデルは別々になっています。
|
6
6
|
|
7
7
|
いわゆる複数のモデルが絡むバリデーションになると思うのですが、そうゆう場合は、フォームオブジェクトで設定した方がいいと聞き、
|
8
|
-
フォームオブジェクトを作成してみたのですが、
|
8
|
+
フォームオブジェクトでバリデーションを作成してみたのですが、
|
9
9
|
よくわからず、うまくいかず困っています。
|
10
10
|
|
11
|
+
|
11
12
|
現状では、入力フォームで「支払先の口座番号」と「取引額」を入力すると、
|
12
13
|
3つのモデルが同時に動くようになっています。
|
13
14
|
図にするとこんな感じです。
|
14
15
|

|
16
|
+
データのやりとりはこんな感じです。
|
15
17
|

|
16
|
-
例えば、支払ユーザーの口座残高が10000(1万)なら、1万
|
18
|
+
例えば、支払ユーザーの口座残高が10000(1万)なら、1万1以上の数値の入力を
|
17
19
|
AmmountTransaction(取引)モデルのamount(取引額)、
|
18
20
|
DepositsAndwithdrawal(入出金)モデルのamount(取引額)、
|
19
21
|
BasicIncomeAccount(口座)モデルのbalance(残高)を更新する際に使う増減額、
|
@@ -59,10 +61,10 @@
|
|
59
61
|
コントローラのコードです。3つのモデルを動かす取引処理の記述が書かれています。
|
60
62
|
取引処理は複数のモデルが絡む固有の処理(ビジネスロジックというもの?)なので、
|
61
63
|
この固有の処理もフォームオブジェクトやサービスクラスに
|
62
|
-
移動させた方がいいのですが、ひとまずおいておきます。
|
64
|
+
フォームオブジェクトに移動させた方がいいのですが、質問の本題から離れるのでひとまずおいておきます。
|
63
|
-
コントローラには、フォームオブジェクトを呼び出す記述をすると思うのですが、
|
65
|
+
コントローラには、フォームオブジェクトを呼び出すコードを記述をすると思うのですが、
|
64
|
-
仮に複数のモデルが絡むバリデーションだけを行うフォームオブジェクトの場合、
|
66
|
+
仮に複数のモデルが絡む**バリデーションだけを行うフォームオブジェクトの場合、
|
65
|
-
どこにどんな記述をすればいいのでしょうか?
|
67
|
+
どこにどんな記述をすればいいのでしょうか**?
|
66
68
|
|
67
69
|
```ruby
|
68
70
|
class AccountTransactionsController < ApplicationController
|
@@ -147,7 +149,7 @@
|
|
147
149
|
|
148
150
|
|
149
151
|
3つのモデルの状態です。
|
150
|
-
```
|
152
|
+
```ruby
|
151
153
|
create_table "account_transactions", force: :cascade do |t|
|
152
154
|
t.decimal "amount"
|
153
155
|
t.datetime "created_at", null: false
|