문제

그래서 나는 뭔가가있는 흥미로운 요구 사항에 대한 내 프로젝트입니다.요 has_one 관계 어디 그것은 하나의 클래스 또는 다른 없지만 상속입니다.나는 멀리 얻을 수 있는 상속하는 경우 그것이 유일한 방법이지만,두 개의 연결 기록 완전히 다른 데이터와 관련이 없다.

내가 무엇을 파악할 필요가 무언가가 다음과 같습니다.

# 1. Foo never belongs to anything.
# 2. Foo MUST have one assigned sub-record for validity.
# 3. Foo can only have either Bar or Baz assigned.
# 4. Bar and Baz have only ONE common property, and aren't
#    related in either data or implementation.

class Foo < ActiveRecord::Base
  # Attributes: id, name, value
  has_one :assignment, :foreign_key => 'assigned_to', :readonly => true
          # Could really use an :object_type for has_one here...
end

class Bar < ActiveRecord::Base
  # Attributes: name,...
end

class Baz < ActiveRecord::Base
  # Attributes: name,...
end

Foo 는 하나의 할당,의 유형 중 BarBaz;그들은 단지 하나의 공통된 열,그래서 아마도 내가 만들 수 있는 부모 개체는 것이다.까지,남녀노소 누구나 좋아합니다 그들이 상속에서 일반적인 개체를 경우(여기에 포함된 데이터는 정말 오렌지,사과)해야 합니다 내가 만들 테이블에 대한 기록이 있는가?할 수 있습니 아마도 그것으로 도망하는 경우에 레코드를 추상적인 기록이지만,아이들이지 않는가?

나는 가정하여 지금 당신이 볼 수 있는 나의 어려움.내가 오히려 새로운 RoR 하지만 사랑 있도록 최선을 다하고 있습니다..나는 확실히 방법이 있 이지만,나는 터무니없는 경우 내가 무엇을 알아낼 수 있습니다.

도움이 되었습니까?

해결책

당신은 노력하고 모델이 맞지 않는 뭔가 관계형 데이터베이스의 패러다임이다.모든 참조에서 SQL 하나의 원산지와 하나의 대상입니다.

FWIW,다형 협회 또한 반대로-패턴이기 때문에 그것이 규칙이 있습니다.해야 단서는 깨지는 디자인 때 문서 말을 삼가야 하는 참조 무결성 제한조건을 만들 작품!

필요하신 푸에 두 개의 has_one 관계:하나는 바에 하나 Baz.그 일부를 구현하는 클래스 로직하려고 하기만 하나 참조를 채워지에 인스턴스의 Foo.즉,참조하기 바 Baz,하나의 값이 있어야 하고 다른해야합은 없음,그러나 이를 위해 무언가가 코드에 대한 확인 및 적용.

다른 팁

아마 이렇게 하는 방법 중 하나를 만드는 것입하는 한 협회에서 Foo,한 바와 Baz.을 만든 다음 방법이라고 할당 및 할당=할 수 있는 유일한 방법에 액세스하는 바와 Baz.을 확인할 수 있는 두 개의 has_ones 지 전무에서 얻는 방법을 반환합니다.에 할당 방법,당신은 할 수 있습니다-무엇인지 확인하 유형 변수의 전달되고 올바르게 설정이나 관계는 개체를 설정하고 다른 전무합니다.사용되어야 할 모든 당신의 기지없이 너무 복잡합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top