2

メディア コレクションにあるものの種類を制御する4 つの完全に独立したモデル ( MovieBookGame、 ) があるとします。Albumそれらを使用して、個々のアルバム、映画などを CRUD してタグ付けできます。

しかし、それらすべてに共通することを追跡し、実行する必要があります。したがって、次のようなItemテーブルを提供するモデルが必要であると考えました。item

| | ID | item_id | アイテムタイプ | ステータス | 所有 |
+----+---------+-----------+--------+------------+
| | 01 | 01 | 1 | 3 | 2 |  

およびビットを使用するstatuspossession、アイテムが新品か使用済みか、自分のものか貸与されたものか (別のテーブルで誰に) などを追跡でき、テーブル自体でアイテムの合計数を知ることができます。元の 4 つのモデルとそのオブジェクトには触れずに、私がそれらに何ができるかではなく、それらが何であるかについての情報のみを提供する必要があると思います。編集: 映画や本が追加されるたびにitems、関連情報でテーブルを更新する必要があることに注意してください。

私は初心者で、どうすればよいかについていくつかのアイデアがありましたが、どれも成功しませんでした。質問することがたくさんあることはわかっていますが、知りたいのですが、どうすればこれを達成できますか?

どんな助けでも感謝します、ありがとう。

4

4 に答える 4

5

これを行う最も簡単な方法は、ポリモーフィックアソシエーションを使用することです。

于 2009-03-24T18:29:43.943 に答える
4

ActiveRecordでポリモーフィックな関連付けについて説明しています。これらのURLを確認してください。

于 2009-03-24T18:34:16.443 に答える
2

Railsでの継承(私の意見では)は、単一テーブル継承しか許可しないため、多くのことが望まれます。

私がすることは、各モデル(映画、本など)を1対1の関係でアイテムに関連付けることです。

class Book < ActiveRecord::Base
  belongs_to :item
end

編集:多形のもの(正直に言うと、Railsが持っていたことを忘れていたもの)を調べた後、それはあなたが探しているものよりも多いかもしれないと思います。私のやり方はうまくいくでしょうが、他の方法の方がうまくいくと思います。

于 2009-03-24T18:29:39.590 に答える