0

私が現在取り組んでいるアプリケーションでは、参照整合性を確保するために 3 つのモデル間の関連付けを設定することに行き詰まっています。Event モデル、Building モデル、Room モデルがあります。実際の関連付けは非常に直感的です。イベントは 1 つの建物と 1 つの部屋にのみ存在できます。建物は明らかに複数の部屋を持つことができます。

これが私が今設定したものです。ただし、イベントが建物に属し、ルームの外部キーがイベント テーブルにある場合、イベントはどのようにしてルームを指定できるでしょうか。これは has_many :through 関係を使用する場所ですか? 部屋は建物によって所有されているため、建物と部屋の両方の外部キーを Event テーブルに保存することは良い方法ですか? 部屋を指定できるようにする前に、建物を指定する必要があるという条件付きの関係はどうでしょうか (たとえば、部屋が 2 つある建物もあれば、部屋が 20 ある建物もある)。

申し訳ありませんが、私はこれについて非常に不明です。助けてくれてありがとう!

    class Event < ActiveRecord::Base
    belongs_to :building

    end

    class Building < ActiveRecord::Base
    has_many :events
    has_many :rooms

    end

    class Room < ActiveRecord::Base
    belongs_to :building

    end
4

2 に答える 2

1

これを処理するには、次のようなことを行うのが最善の方法だと思います。

class Event < ActiveRecord::Base
 belongs_to :room
 has_one :building, :through => :room
end

class Building < ActiveRecord::Base
 has_many :events
 has_many :rooms
end

class Room < ActiveRecord::Base
 belongs_to :building
end

したがって、 has_one :through を使用して、イベントがホテルを所有していることを指定できます

于 2011-04-30T08:06:37.340 に答える