2012-02-29 21 views
2

私は現在、Rails 3.2を使ってアプリケーションを開発していますが、少し問題があります。私はこれが何百回も前に尋ねられたことを知っていますが、私はそれを解決する答えを見つけることができませんでした。ここには同様のERがあります:http://i.stack.imgur.com/x5V0G.pngRails複数テーブルの継承と多相関連

私は何をしようとしていますか。今ではそうのように私のモデルを定義できるようにするとよいでしょう

Supplier.first.theatres.first.events.first.orders 
TourEvent.first.orders 
Tour.first.orders 

を:私は次のように読み取るために協会を期待してい

class Event < ActiveRecord::Base 
    has_many :orders 
    belongs_to :eventable, polymorphic: true 

    # id, eventable_id, eventable_type, title, date, price 
end 

class TourEvent < Event 
    belongs_to :tour 

    # id, tour_id, rendezvous, guide_name 
end 

class Tour < ActiveRecord::Base 
    has_many :events, class_name: 'TourEvent' 

    # id, name, venue, duration 
end 

しかし、私はそれはSTI」のために予約されます理解します"MTI"ではなく "どのように複雑なミックスインやプラグインを必要とせずに私のソリューションを稼働させるには?それとも不可能なのでしょうか?その後、あなたはイベントの注文にアクセスすることができ

suppliers 
has_many :events 

events 
belongs_to :suppliers 
belongs_to :institutions 
has_many :orders 
# id, supplier_id, institution_id, ... 

institutions 
# id, type, title, ... 
types: theatre, club, tour 

orders 
belongs_to :events 
# id, event_id 

答えて

0

私はあなたがこのような何かを作ることができると思います

Supplier.first.events.first.orders 
+0

申し訳ありません - 私はあなたが問題を理解してないと思います。私はもう少し読んだことがありますが、現在、Rails 3.2.1でネイティブに複数表の継承を行うことはできませんと言っています。すてきな追加だろう。 – ollym

+0

私が写真http://i.stack.imgur.com/x5V0G.pngに見るように、あなたはDBサプライヤ、注文、イベントに保存したいと思っています。イベントは機関(例えば、atherやクラブ)に属します。なぜあなたはtheather_eventsやclub_eventsのようなテーブルを追加する必要がありますか?なぜ各機関のテーブルが必要ですか? – ryaz

+0

各「機関」には異なる情報が格納されています。私はそれを区別することが重要です。 – ollym