0

저는 Widget입니다.ActiveSupport ::`to_liquid`가`liquid_methods`에 의해 재정의 됨

I include SomeConcern

SomeConcern extends Activesupport::Concern 그게 모든 벌금을. 나는 to_liquid와 같은 SomeConcern에 정의 된 메서드를 호출 할 수 있으며 모든 것은 peachy입니다.

Widget 클래스 내에서 liquid_methods :foobar을 호출하면 내 관심사의 to_liquid 메소드가 액체의 기본값 인 1로 대체됩니다.

내 관심 버전이 우선 적용되도록하려면 어떻게해야합니까?

답변

0

액체는 define_method :to_liquid을 모델에서 liquid_methods으로 호출 할 때 사용합니다.

믹스 인을 우선적으로 사용하려면 해당 통화 후에 포함시켜야합니다.

당신이 할 수있는 또 다른 일은 항상 (ActiveSupport::Concern 이상인) 정규 모듈을 가지고 있으며, prepend을 사용하여 조상 체인 앞에 넣는 것입니다.

+0

나는 포함 할 순서를 뒤집어 봤습니다. – Mike

+0

예, 주문을 취소해도 작동하지 않습니다. Ruby 클래스 조회가 작동하는 방식 때문입니다. 그것을 'prepend'하려고 했습니까? 그렇지 않으면'alias_method_chain'을 사용할 수있다. – phoet

+0

나는 다른 방법으로 문제를 해결했다. 입력 신호를 주셔서 감사합니다. – Mike