STI 유형을 통해 특정 클래스의 모델을 대상으로하는 범위에서 build
메서드를 호출하고 ActiveRecord에서 올바른 클래스.ActiveRecord는 STI 클래스를 대상으로하는 범위를 통해 잘못된 클래스의 인스턴스를 만듭니다.
class LineItem < ActiveRecord::Base
scope :discount, where(type: 'DiscountLineItem')
end
class DiscountLineItem < LineItem; end
> LineItem.discount.build # Expect an instance of DiscountLineItem here
=> #<LineItem ...>
자, 내가 DiscountLineItem
의 인스턴스 LineItem
아닌 인스턴스를 기대했다.
아마도이 토론을 레일스 트래커로 옮길 때입니다. 나는 실패한 테스트 케이스를 작성하고 오늘 게시 할 것이다. – steveluscher
지난 밤에 수정 사항을 코딩하여 피드백을 위해 레일 핵심 Google 그룹에 게시 할 예정이었습니다. 내가 기회를 얻을 때 나는 업데이트로 여기에 나중에 저녁을 게시 할 수 있습니다. –
@steveluscher 여기 당신이 시도 할 수 있습니다 액티브에 대한 패치입니다 : https://gist.github.com/5cad22a11f011052d8f6 –