2016-12-20 3 views
0

나는 미로 프로젝트를 작업 중이며, 아이러니하게도, 나는 길을 잃었습니다. 지금까지 저는 모델 사이에 has_many_though 관계가 새로 생겼습니다. 그래서 모델에 무언가를 통해 많은 것들이 있다면?has_many though of

기본적으로 각 Room에는 많은 Rooms이 있습니다. 이 룸을 연결하기 위해 Tunnel 모델을 만들었습니다. 그래서 방이 터널을 통해 다른 많은 사람들과 연결됩니다. 그러나 이러한 관계를 구축하는 것이 어려워집니다. =이 발가락 MODELA는 ModelC을 통해 많은 모델 B를 가지고 올 때

class Room < ApplicationRecord 

    has_many :tunnels 
    has_many :rooms, through: :tunnels 

end 

그리고 내 터널
class Tunnel < ApplicationRecord 
    belongs_to :lemmin_room, :foreign_key => "room1_id" 
    belongs_to :lemmin_room, :foreign_key => "room2_id" 
end 

레일 문서는 매우 분명하다 두 개의 객실

를 연결하는 얻는다, 그러나 나는 이제까지 MODELA 언급 생각하지 않는다 ModelB. 당신의 Room 모델,

class Tunnel < ApplicationRecord 
    belongs_to :lemmin_room_1, :foreign_key => "room1_id" 
    belongs_to :lemmin_room_2, :foreign_key => "room2_id" 
end 

다음 :

+0

이 관계는 단방향입니까 (방에 터널을 통해 다른 방이 많이 있지만, 연결된 방 중 하나에 있으면 같은 터널을 통해 이전 방으로 돌아갈 수 없습니까?) 미러링 된 관계 (다른 방 B에 연결된 방 A는 같은 터널을 통해 B에서 얻을 수 있습니다)? – guiniveretoo

+0

필요하다면 같은 터널로 이전 방으로 돌아갈 수 있습니다. –

답변

0

당신처럼, 다른 이름으로 두 개의 belongs_to 연결을 정의 할 필요가

class Room < ApplicationRecord 
    has_many :tunnels 
    has_many :rooms, through: :tunnels, source: :lemmin_room_1 
end 

당신은 Tunnel에서 원하는 객실 얻기 위해 source를 지정할 수 있습니다 .