0

プロジェクト管理用に構築された Rails インスタンスの比較的基本的なリビジョンを追跡しようとしています。このトピックに関する情報がほとんどないことに驚いたので、ここに投稿することにしました。多分私は間違った場所を見ているだけですか?これの一番上ではっきりさせておきますが、誰かの宝石 (Paper Trails など) を使用したいだけではありません。これは、生産に最適な時間を費やすというよりも、理論上の演習であると考えてください。

私の基本的な編成のアイデアは次のとおりProjectです。は基本的に単なる ID であり、ほとんどのデータは に格納されています。最初のファイルには、必要なすべてのデータ (プロジェクトに関与しているユーザー、期限など) が含まれています。次に、変更を加えて、その後の変更ごとにそれを複製するのが最も簡単です。しかし、特に 12 のフィールドのうちの 1 つだけが変更された場合は、テーブルに不要なデータが毎回大量に追加されているようです。Revisioncreated_atProjectRevisionRevisionRevision

私は Rails にかなり慣れていないので、MVC の一部、より強力なオブジェクト指向のものは、まだ私にとって新しいものです。私の考えは、 、作成者、および実際に変更されたフィールドRevisionのみを含むようにすることです。しかし、それが最善の戦略である場合、Rails でこのデータをどのように平坦化すればよいでしょうか? つまり、sに対して次のテーブルがあったとします。created_atUserRevision

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これは、私にとって、変更されたフィールドの名前と新しいコンテンツだけを持つモデルを持つという考えを除外しました。

他の誰かのライブラリを使用せずにこれを行いたいです。どうやって解決し始めればいいのかわからない、比較的小さな問題のように感じます。でも、自分が思っているよりもはるかに大きなワームの缶を開けようとしているのかもしれません。

4

1 に答える 1

0

実際、このトピックにはかなりの量があります。役立つリンクのリストを次に示します。

Ruby Toolboxで必要な gem を確認し、Railscastsでチュートリアルを確認することをお勧めします。

于 2012-09-13T22:39:49.663 に答える