2009-07-20 16 views
0

私は奇妙な状況に陥っています。(Rails)関連のないエンティティ間のさまざまな関連付けですか?

Sites -> Buildings -> Meters -> Values 

私はその後、値に関するレポートを作成する第五エンティティ(チャート)を持っている:基本的に私は4つの実体があるセットアップを持っています。エンドユーザーに対応するために、これらのアイテムのいずれかと視覚的に関連付けられるようにするための要求があります。基本的に各グラフは一度に1つのエンティティにのみ関連付けることができます。直感的には、新しいアソシエーションごとにテーブルを追加せずにChartsをすべてのエンティティに関連付けることを可能にする、品質の「ACTS_AS」なのか、それとも狂っているのでしょうか?

ベスト。

答えて

0

おそらく多態性の関連付けが必要です。

class Chart < ActiveRecord::Base 
    # charts table has a chartable_id and a chartable_type column. Type is the 
    # class name of the associated chartable: Site, Building, etc. 
    belongs_to :chartable, :polymorphic => true 
end 

class Site < ActiveRecord::Base 
    has_one :chart, :as => :chartable 
end 

class Building < ActiveRecord::Base 
    has_one :chart, :as => :chartable 
end 

# ... 
+0

非常に良い。私はインタフェースがどのように見えるかを頭の中で包み込むのに少し問題があります。ドロップボックス?チェックボックス? *スクラッチヘッド* –

+0

[OK]を、私は "Railscastcastsエピソード154"多形性に関して見てきたと私は必要なものをカバーしています。しかし、それは1つのことを逃しています - 基本的に、それは人がフォームを介して新しいアイテムを追加することを前提としています。しかし、私はリモートからjavascriptとajaxilyを介して提出したい(うん、確かにどこかの言葉である)正しい位置に表示する。 CHARTコントローラ内のすべての適切なコードを保持しながら、これについてどうやって行くかについての提案はありますか? –

+0

...また、 "Sites/1/charts"のようなことをしようとするとUnknownActionエラーが発生します。私は適切にルートを設定しましたが(railscastごとに)、何かがまだ壊れています。何か案は? –

関連する問題