2

좋아, 여기 내 상황이있다. PHP 개발자는 최근에 Rails 개발자가되었습니다. PHP 코드에서 추상 클래스를 "기본"클래스로 사용하는 것은 매우 일반적인 패턴입니다. 현재의 Rails 애플리케이션으로 옮길 때 나는 내 머리 속의 PHP 아이디어로 많은 사전 계획을 세웠다. 이제는 약간의 두통을주고있다.잠재적으로 무제한 유형의 다형성 연관

나는 많은 종류의 송장을 가지고 있습니다. PHP에서는 추상 클래스를 만들고 클래스를 확장하는 다양한 유형의 Invoices를 사용합니다. 나는 추상적 인 클래스에서 중복 된 코드를 유지함으로써 일들을 마르고 인생은 좋다. 레일에서는 일이 조금 다르게 작동합니다.

나는 내 선입관에 딱 맞는 패턴을 찾을 수없는 것 같습니다. STI는 좋지만 각 인보이스에는 많은 필드가 있으므로 모든 Null 필드에 대한 아이디어가 싫다. 나는 코드를 다룰 모듈을 사용하여 다형성 연관들과 가까이왔다. 그러나, 내가 보는 다방면의 다형성 협회는 내가 의도 한 방식과 다르게 사용됩니다. 예를 들어, railscast에는 코멘트를 사용해야하는 세 가지 클래스가 있습니다. 정확히 같은 것은 아닙니다.

내 질문은 : 이미 내 코드를 DRY하는 모듈을 사용하는 방법을 알고 있지만 "PHP"에서 "기본"클래스와 동일한 코드 모듈을 제공하기 위해 다형성 연결을 사용하려면 어떻게해야합니까? 참고 STI를 사용할 수없는 이유는 얼마나 많은 종류의 송장이 생길 수 있는지에 대한 제한이 없기 때문입니다. 지금은 1이지만 한 달에 20이 될 수 있습니다.

답변

3

사용할 수있는 또 다른 옵션이 있습니다 : 다중 테이블 상속. 설정하는 것이 조금 복잡하지만 STI에는없는 이점과 다형성 연관에없는 장점 중 일부를 제공합니다. 이 작업을 수행하는 방법은 this post을 확인하십시오.

+0

당신의 나의 영웅. 이것은 내가 찾고 있었던 바로 그 것이다. 대단히 감사합니다. –

+0

또한 기본적으로 기사가 보석 내부에서 설명하는 모든 작업을 수행하므로 https://github.com/hzamani/acts_as_relation/ gem으로 가기로 결정했습니다. 다시 한 번 감사드립니다! –