app.record.index.showイベント時にフィールドの値を更新したい

案件管理アプリと予算管理アプリがあります。

それぞれ以下のような内容です。

・案件管理アプリ

┗1案件をそれぞれ1レコードで管理

・予算管理アプリ

┗請求年月ごとにレコードがある。

案件管理アプリの各案件レコードの請求年月フィールドと紐づけて抽出している。

※予算管理アプリの「2019年3月」というレコードには案件管理アプリの請求年月フィールドに「2019年3月」と入力があるものが抽出されています。

 

予算管理アプリにその月の請求額合計フィールドがあり、自動で値を入れたいのですが、いいやり方が思いつきませんので、アドバイスいただけたらと思います。

 

【試したこと】

・レコード詳細画面を開いた時に各案件の合計金額を求めPUTで更新。

→値の更新はできたが、編集画面に入って編集後保存しようとすると、誰かが更新したことになって、リロードしないと保存できない。location.reload(true);をすると無限ループになってしまう。

 

・Promisを使って(表現があっているかわかりませんが、、、)案件レコードが保存された時に紐付いている予算管理のレコードを引っ張ってきてPUTで更新

→予算管理のレコードをGETする際にレコードIDが必要だが、レコードIDの取得方法が思いつかない。

 

・詳細画面にボタンを「最新情報に更新」というようなボタンを置いておきクリックした際に、各案件の金額合計を取得してPUTで更新

→これはまだ試していないです。

 

思いつくのは上記3つくらいなのですが、他にいい方法があればご教示いただければと思います。

情報が少なすぎというところがあれば指摘してもらえたら助かります。

よろしくお願いいたします。

ryota さん

値は保持されませんが、こういった方法もあるようです。

関連レコードの項目を条件付きで集計
https://developer.cybozu.io/hc/ja/articles/203030394

2番目の方法ならば、一旦 一括取得 API でいい感じクエリ作成して、取ってくる方法ですね。
ややこしくなるので、個人的には3か↑のような1の改良版が良いと思います。

HANSAさん

ありがとうございます!

1の方法はいただいた記事の方法で合計額を取得するまではできるのですがフィールドに値をセットするところで詰まってしまいました、、

自動更新させたいな〜と思うのですが、個人的にも毎回APIのリクエスト出すのもどうなんだろうと思っていたので3の方法で一旦検討してみます!