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