2

これは、paper_trail や他のプラグインのような sth を使用できる通常の使用例ではありません。変更を追跡するためのより複雑なアプローチです...しかし、説明させてください。

予定、担当医師、およびクライアントを含む医療カレンダーがあると仮定しましょう。

あなたがビルで、今後数週間のスケジュールを計画する責任者であるとしましょう。翌月の何百もの予約をすべて設定した後、医師やクライアントにスケジュールを送信します。

明らかに、4 週間前に計画すると、元のスケジュールに変更が生じます (病気になったために医師を変更したり、クライアントが死亡したり、予約の開始時刻を変更したりします)。

そのため、スケジュールの更新を送信する必要があります。しかし、明らかに、これらのスケジュールの変更によって影響を受けるクライアントまたは医師にのみ電子メールを送信する必要があります。

把握する必要があるのは次のとおりです。

  • 新しい予定?
  • 予定を変更しましたか?
  • 予定をキャンセル?

最初はかなり単純に見えますが、最後にスケジュールを送信したタイムスタンプを覚えておいて、after_save、after_destroy コールバックで変更を追跡できます。

残念ながら、これはいくつかのトリッキーなケースにもつながります。たとえば、医師を削除して、同じ医師をその予約に再度追加するなどです。明らかに「実際の」変更ではない2つの変更があります。

私が持っているのが好きなのは、それらの変更を保存し、後でレビューし、医師やクライアントに送信する別のテーブルです。

誰かが同様のことをしたか、またはこの問題を解決するための優れたアプローチを持っているかどうか、私は本当に興味があります. :)

ありがとう !

4

2 に答える 2

1

変更を追跡するために PaperTrail gem を試すことができますhttps://github.com/airblade/paper_trail

于 2012-12-16T14:54:20.743 に答える
1

状態の変化を観察する最も簡単な方法はかなり単純です。ログ ファイルを使用します。あなたの場合、それは次のような属性を持つステロイド、モデルのログファイルになります: user_to_update, date_changed, notified_ok.

変更を行い、ログ モデルから統計を取得するたびに、新しいログの挿入をトリガーできます。

于 2012-12-16T12:30:35.900 に答える