1

私は現在、保険に基づいた Rails アプリケーションを構築しています。スタッフがシステム テーブルを制御できる管理セクションがあり、ほとんどはドロップ ダウン リストに表示されますが、独自の関連付けを持つより複雑なものもあります。このアプリケーションの主なモデルはポリシーです。これは、他の多くのテーブル (原告、被告、カバーのレベル、ユーザーなど) の情報を保持/リンクする必要があります。アドレスなどにリンクする人

ポリシーがリンクするより複雑なテーブルの 1 つは、保険料、支払いなどを決定するための財務情報を保持する全体的なカバー レベルです。

ポリシーが作成されたら、そのすべてのデータのスナップショットを作成する必要があります。後で管理者ユーザーによってポリシーが修正された場合、関連するデータであっても、バージョン管理が必要です。

誰かがこの問題に対する一般的な解決策を持っているかどうか疑問に思っています。現在、孤立したレコード、単一テーブルの継承、システム テーブル リンクをそのままにしてそのデータを編集不可にすること、データをポリシー テーブルのフィールドにコピーすること (編集時にテキスト ボックスにし、選択ボックスにすること) について熟考しています。 create) またはライブ用とテンプレート用の 2 つのテーブルを作成します。

これまでのところ、私が考えることができる最善の方法は、アプリケーションのニーズに基づいて上記のさまざまな方法を集めたものです。これは、アプリケーションの一般的な問題に違いない!? この種の問題に取り組む方法について、より良いアイデア/アドバイスはありますか?

4

2 に答える 2

1

アプリケーションのニーズを正確に把握しなければ、最適なソリューションを判断することは困難です。

ただし、私が読んだことに基づいてすぐに思い浮かぶ解決策は、あなたが説明する「孤立したレコード」ですが、なぜそれらを孤立させる必要があるのか​​ わかりません。

次のようなモデルを作成できます。

class PolicyHistory< ActiveRecord::Base
   belongs_to :policy
end

class Policy < ActiveRecord::Base
has_many :policy_histories
end

ポリシーの履歴には、特定の時点でのすべてのポリシーの詳細と関連データのスナップショット、さらには誰が変更を行ったかを含めることができます。

関連付けをフラット化し、そのデータを一連の列に格納できます。ただし、関連するテーブルを変更すると、履歴テーブルも更新する必要があるため、問題が発生する可能性があります。

これに対する解決策は、完全なスナップショットをハッシュとしてシリアル化することです。その後、ポリシー履歴テーブルは、関連するテーブルへの変更を処理できます。

これがあなたの助けになることを願っています!

于 2009-11-13T00:58:07.527 に答える
1

モデルのバージョン管理には、vestal_versions (github.com/laserlemon/vestal_versions) プラグインが役立つ場合があります。

于 2009-11-13T00:20:54.320 に答える