プロジェクト管理用に構築された Rails インスタンスの比較的基本的なリビジョンを追跡しようとしています。このトピックに関する情報がほとんどないことに驚いたので、ここに投稿することにしました。多分私は間違った場所を見ているだけですか?これの一番上ではっきりさせておきますが、誰かの宝石 (Paper Trails など) を使用したいだけではありません。これは、生産に最適な時間を費やすというよりも、理論上の演習であると考えてください。
私の基本的な編成のアイデアは次のとおりProject
です。は基本的に単なる ID であり、ほとんどのデータは に格納されています。最初のファイルには、必要なすべてのデータ (プロジェクトに関与しているユーザー、期限など) が含まれています。次に、変更を加えて、その後の変更ごとにそれを複製するのが最も簡単です。しかし、特に 12 のフィールドのうちの 1 つだけが変更された場合は、テーブルに不要なデータが毎回大量に追加されているようです。Revision
created_at
Project
Revision
Revision
Revision
私は Rails にかなり慣れていないので、MVC の一部、より強力なオブジェクト指向のものは、まだ私にとって新しいものです。私の考えは、 、作成者、および実際に変更されたフィールドRevision
のみを含むようにすることです。しかし、それが最善の戦略である場合、Rails でこのデータをどのように平坦化すればよいでしょうか? つまり、sに対して次のテーブルがあったとします。created_at
User
Revision
Project_ID | Title | Description | Due Date | Created_at | Created_by
-------------|---------|---------------|------------|------------|-----------------
1 | Test | Test project | 9/28/2012 | 9/10/2012 | Ben
1 | | | 9/31/2012 | 9/13/2012 | Stuart
1 | | Changed proj | | 9/13/2012 | Liz
Test,Changed proj,9/31/2012
そして、実際、これが最善の方法ですProject
。ID 1を取得するには、どうすればそれを平坦化できますか? これが最善の方法ではない場合は…何ですか?
has_many
重要な場合に注意すべきもう 1 つの点は、これらのフィールドの一部がおよびを介して他のモデルに接続されることhas_many :through
です。Revision
これは、私にとって、変更されたフィールドの名前と新しいコンテンツだけを持つモデルを持つという考えを除外しました。
他の誰かのライブラリを使用せずにこれを行いたいです。どうやって解決し始めればいいのかわからない、比較的小さな問題のように感じます。でも、自分が思っているよりもはるかに大きなワームの缶を開けようとしているのかもしれません。