2011-06-28 18 views
1

私は以下のようなものを実装しようとしています。基本的なセットアップはEventモデルは、その後Scheduleをbelong_toますScheduleモデルRailsの既存のレコードと多対1の関係を作成するには

class Schedule < ActiveRecord::Base 
    has_many :events 
end 

です。 イベント名、日時、実行している長さで構成され、イベントが作成されたときにRoom

Roomは、すべての客室には、播種または管理インタフェースを介して事前に作成され、選択リストから選択されます。部屋には、座席数などの情報が格納されます。

私はこれを正しく実装したメソッドを見つけることを試みてきました。ソリューションは、habtmまたはhas_many:throughの範囲にあるようですが、この状況では結合テーブルが必要ではありません。 理論的には、イベントとしてhas_one :roomが返されますが、逆の関係はルームとしてbelongs_to :eventではないため、多くのイベントで使用することができます。これには、外部キーが室テーブルにあることも必要です。

イベントでroom_idの外部キーを使用してこのモデルを手動で処理することを検討したところ、関連するルームを照会することができました。私は現在、部屋を使ってすべてのイベントを見つけるための要件を見ることができないので、これはうまくいくと思います。

class Event < ActiveRecord::Base 
    belongs_to :schedule 

    def room 
    Room.find(room_id) 
    end 
end 

私はRailsの中で、これまで行ってきたすべてが「正しい」と感じたが、私はここに来たすべての解決策はないと私は何かが欠けてるような気が。あるいは、私はちょうどその余分な魔法を期待しています。 これを行うための「Rails」方法はありますか?

答えて

4

このイベントでは、イベントとルームとの間にbelongs_to関係はありませんか?

class Event < ActiveRecord::Base 
    belongs_to :schedule 
    belongs_to :room 
end 

スキーマの観点から考えてみれば、あなたの「イベント」テーブルはほぼ確実「schedule_id」と「room_id」の列があります。

もう1つの関係は、部屋has_manyイベントです。

+0

ちょうど追加する:それは所有権(英語でそうであるように)を意味するとして 'belongs_to'を考えるのに役立つかもしれませんが、単に '関係を持っています。それは 'has_one'と同じ関係を意味します。それは、外部キーが別のテーブルにあるということだけです。 –

+0

お二人のおかげです。私は、特に 'has_one'が状況に完全にマッチするように聞こえるところで、Railsの関連を考えるのは難しいかもしれないと思います。私はまた、has_many/belongs_to関連で外来キーの位置が混ざっています。正しい方向へのナッジとカップルの時間は助けになりました。 – Sajax

関連する問題