0

를 사용할 때 다음과 같은 속성이 단일 테이블 상속을 활용하는 변경 모델이 레일 3 동적 ID 열을 가질 수 있습니다 :그것이 하나의 테이블 상속

id 
type #this is a single table inheritance type field. 
description 
dynamic_id 

나는 또한 두 개의 하위 클래스가를, Race의 하위 클래스 인 Change 및 Workout의 하위 클래스 인 레이스.

class Race < Change 

end 

class Workout < Race 

end 

나는 트랙라는 네 번째 클래스가 난 그냥 변경 객체의 dynamic_id를 필드를 사용하여 다음과 같은 네 가지 연결을 생성하고 싶습니다. (즉, 나는 race_id와 workout_id를 Change 테이블에 명시 적으로 추가하지 않았다. 대신 race_id와 race_id를 dynamic_id로 사용하고 싶다.

다음은 내가 만들려고 시도하는 네 가지 연관입니다.

  1. 레이스 모델 - belongs_to : 트랙
  2. 운동 모델 - belongs_to : 트랙
  3. 트랙 모델 - has_many : 인종
  4. 트랙 모델 - has_many : 운동 내가 노력했습니다

class_name과 : foreign_key를 사용하여 연관 관계를 설정하려면이 작업을 수행 할 수는 없습니다. 이것은 실제로 가능합니까? 나는 그것이 아마 모범 사례는 아님을 알지만, 여전히 그것이 가능한지보고 싶습니다. 귀하의 의견을 보내 주셔서 감사합니다.

답변

2

당신이 찾고있는 것은 "다형성 연관"입니다. 레일 가이드에서 자세한 내용을 찾을 수 있습니다. http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

STI와의 다형성 연결을 사용하기 때문에 사례가 약간 특별합니다. 이 조합의 버그가 있음을 기억하지만 지금까지 해결할 수 있습니다.

나는 완전히 읽어 보지 않았하지만,이 블로그 게시물은 상황을 설명하는 것 같다 http://www.archonsystems.com/devblog/2011/12/20/rails-single-table-inheritance-with-polymorphic-association/

내가 다형성 협회와 STI 여기에 설명과 함께 발생하는 문제 : Why polymorphic association doesn't work for STI if type column of the polymorphic association doesn't point to the base model of STI?