2017-05-25 35 views
0

複雑なモデルの関連付けのセットアップが少しありますが、私はかなり正しいように見えません。複雑なモデルの関連付け - レール

は私が持っている:

      Owners  Doors  
    Clients -> Orders -> < | /
          Property - Windows 
            \ 
             Heating/Cooling 

だから、思考プロセスは、各プロパティが多くドア、窓、加熱/冷却システム、および所有者を持つことができるということであり、各所有者は多くのを持つことができますプロパティ

ためだけ所有者財産情報(アドレスなど)を、私たちが行くとプロパティがを持っているどのように多くのドア、窓、加熱/冷却システムを見つけるに提出された場合、更新を入力し、クライアントに送り返します。

今私は(スペース節約のためにここに凝縮)、私のモデルを設定している

Clients has_many :orders 

Order -> belongs_to :property, :clients 
Order -> has_many :doors, :windows, :heating/cooling, through: :property 

Property -> has_many :doors, :windows, :heating/cooling, :owners 
Doors, Windows, Heating/Cooling, Owners -> belongs_to :property 

だから私の問題は、私はドア、窓、および加熱/冷却が引かれたかを知ることができるようにしたいということですどの順番で。だから私は彼らが注文に属するべきだと言いたいのですが、複数の注文が同じ物件に来る場合は、その物件のDBに複数の同じ情報を複数の時間入れたいと思っていません。また、プロパティ自体を検索し、すべての関連注文、ドア、窓、暖房/冷房を見ることができるようにしたいと考えています。

は、私はまだレールにかなり新たなんだとし、協会が仕事とその機能どのように任意の洞察力は、事前に感謝スーパー参考になるので、私の説明が明確だった願っています。

答えて

0

最も速いアプローチのように、アレイとしてシリアル化されたorder_ids列をドア/ウィンドウ/加熱/冷却テーブルに追加することが考えられます。列の状態を維持するためにアプリケーションロジックが必要です。

無関係:itemsテーブルのような何かをして、それが多形であることができないほど独特のドア/窓/暖房/冷却モデルはありますか?

+0

ドア/窓/暖房/冷却モデルは、独自のモデル/テーブルを保証するのに十分なほどユニークです。一部のプロパティは重複していますが(サイズ、表面積など)、多くのプロパティがあります。 私の最初の考えは、各モデル '' belongs_to' property'両方と 'orders'を持っていることでしたが、私の懸念があれば注文が、我々はすでにそれを持って、ドアや窓の種類を知っている既存のプロパティに通じ置かれていることで、注文は新しいドアや窓のレコードを作成し、現在のものを参照しません。モデルを多相に設定して、それらを両方にジョインテーブルで接続する必要があるのだろうかと思います。 –

関連する問題