2012-01-04 2 views
0

RoR에서 간단한 질문 : 두 필드가 동일한 모델의 외래 키를 사용할 수 있습니까?복수의 고유 필드에 동일한 외래 키 사용

예를 들어, 나는 직원입니다. 두 개의 필드가 필요합니다. 현재 사용중인 상점과 앞으로 이동할 장소입니다. 내 모델에서 두 가지 필드가 같은 foriegn 키이지만 다른 값을 가질 수는 있습니다.

그것은 설명하기 어렵다 ...

일례 Employee 모델에서

EMPLOYEE TABLE 
---------------------------------------------- 
Name  Current Shop ID  Next Shop ID 
John Doe 2      1 

SHOP TABLE 
---------------------------- 
ID   Shop Name 
1   Jims Tools 
2   Johns Tools 

, 나는 쇼핑 모델에서 외래 키로 Current ShopNext Shop 모두를 원한다.

답변

0
class Employee < ActiveRecord::Base 
    has_one :current_shop, :class_name => Shop 
    has_one :next_shop, :class_name => Shop 
end 

class Shop < ActiveRecord::Base 
    belongs_to :current, :class_name => Employee 
    belongs_to :next, :class_name => Employee 
end 
0

외래 키가 테이블 이름과 일치하지 않으면이를 지정해야합니다. 하지만 원하는만큼 가질 수 있습니다.

class Employee < ActiveRecord::Base 
    blongs_to :current_shop, :class_name => Shop, :foreign_key => "current_shop_id" 
    blongs_to :next_shop, :class_name => Shop, :foreign_key => "next_shop_id" 
end 

여기서 중요한 점은 외국 키가 모델에 belongs_to를 지정해야한다는 것이다. EmployeeShop을 참조하는 키가있는 경우 Employee belongs to a Shop입니다.

Comment에 게시의 foreign_key가있는 것과 같습니다. 그 다음 Comment belongs to a Post입니다.