3

STI를 사용하는 서브 클래스가 여러 개인 상위 모델 이 있습니다. 거래을 belongs_to 관계를 사용하여 계정에 연결하고 싶습니다. 참조 된 계정은 자산 또는 책임 일 수 있습니다.STI 모델과의 동적 유형 지정

class Account < ActiveRecord::Base end 
class Asset < Account end 
class Liability < Account end 

내 거래 모델 나는 자산, 부채 하나에 트랜잭션의 계정을 설정할 수 있도록하려면

class Transaction < ActiveRecord::Base 
    belongs_to :account #Either an Asset or Liability model 
end 

계정 belongs_to. 그러나 부모 클래스가 아니기 때문에 트랜잭션 계정을 자산 또는 책임 성으로 설정하면 TypeMismatch 오류가 발생합니다. 계정.

참고 : 이것은 belongs_to 연관에 다형성을 사용하여 해결할 수 있다고 생각하지만 참조 된 모델이 모두 동일한 기본 테이블을 사용할 때는 유형 열에 클래스를 지정하지 않아도됩니다.

답변

2

이 코드는 그대로 작동합니다. 연관된 모델에서 STI 모델에 대한 다형성 유형을 지정할 필요가 없습니다.

내가받은 STI 기본 클래스는 실제로 STI 기본 클래스가 실제로 "Account :: Base"였기 때문에 단순히 클래스 이름으로 "Account"를 가졌기 때문에 발생했습니다.