2009-07-23 20 views
0

私は、履歴をかなり無期限に、または少なくとも非常に長い時間保持する必要がある複数のモデルがあります。アプリケーションでは、さまざまな組織の人々のための毎日の出席統計を追跡し、他の同様の関連団体を追跡します。私は、ユーザーが削除される前にいつでも出席依頼に出頭しないため、ユーザーを削除できないことに気付きました。私が抱えている問題は、古いアソシエーションを追跡し、それらの古いアソシエーションを照会する良い方法を見つけることです。

ユーザーと組織の間に接続テーブルがある場合は、ユーザーと組織の間の新しい関連付けを新しい行に追加するだけで、古いものを日付に基づいてクエリできますこれを行うためのエレガントな方法はありません、すべてがちょうど醜い感じ。誰もがこのようなことを以前に処理したのかどうか疑問に思っていました。ありがとう。モデルアソシエーションの履歴を保存する

答えて

0

あなたはまだそれらの「削除」のユーザーを照会するが、それらが削除されているかのように、彼らは他の場所に動作するようにコードを変更することができるようis_deletedフィールドを作成します。その後、実際に行を削除してデータを失う必要はありません。

+0

私はそれだけではありますが、ユーザーが関連付けられている現在の組織を簡単に取得できる方法を探していますが、同じユーザーが以前に持っていた組織にすべての古い関連付けも保持します。私にはたくさんの団体があり、それは同じようにしなければならないでしょう。 – ohdeargod

+0

この接続テーブルにはuser_idとorganization_idだけがありますか?もしそうなら、そこに日付フィールドを置くことはできますか?現在参加している組織をすばやく判断するために、「参加日」、「関連付け解除日」、およびis_currentというフィールドを持つことができます。 –

+0

実際には本当にいいと思う、とてもありがとう! – ohdeargod

1

モデリングポイントから見ると、関係は従業員と雇用者の間の関係、つまり雇用のように聞こえます。これは、EmployeeとEmployerの両方にTimePeriodの概念(startDateとend Date)の概念と一緒に参照されます。あなたが 'アクティブ' の従業員を照会したい場合、それらはたstartDate < = NOW()& & endDateに> = NOW()、 '終了' 従業員が(今endDateに<持っていると、すべてのものです)、など

Iあなたとの関係がユーザーと組織の間にどのような関係があるのか​​、その関係を始めるか終わらせるかをあなたのケースでは知ることはできませんが、Employment、Membership、Enrollment、Contractのような概念がありそうです。あなたが毎日の出席を言うとき、それはある期間にわたって毎日ではありませんか?期間はクエリの基礎となります。 、
Berryl

0

を助け

・ホープ彼らの団体を含めたモデルの改訂を追跡するためのプラグインの数があります。 revision-related pluginsの検索をご覧ください。