명명 된 범위를 새 명명 된 범위로 결합하는 방법이 있습니까?
-
09-06-2019 - |
문제
있음 라코 디스
좋아요 라코 디스
하지만 DRY 방식을 선호합니다.사용하여도 같은 효과를 얻을 수 있습니다 라코 디스
하지만 특별히 사랑 스럽지는 않습니다.
해결책
글쎄요 저는 아직 rails를 처음 사용하고 정확히 무엇을 하려는지 잘 모르겠습니다.하지만 코드를 재사용하려는 경우 일반 클래스 메서드를 사용하지 않는 이유는 무엇입니까?
def self.ab(a, b)
a(a).b(b)
end
a와 b 대신 * args를 사용하여 더 유연하게 만들 수 있으며, 다음 중 하나를 선택적으로 만들 수 있습니다.named_scope에 갇혀있는 경우 확장하여 동일한 작업을 수행 할 수 없습니까?
당신이하려는 일에 내가 완전히 틀렸는 지 알려주세요.
다른 팁
적어도 3.2 이후에는 현명한 해결책이 있습니다. 라코 디스
클래스 메서드로 만들면 다음과 같이 연결 프록시에 연결할 수 없습니다. 라코 디스
예 named_scope를 재사용하여 다른 named_scope 정의
편의를 위해 여기에 복사합니다.
proxy_options를 사용하여 하나의 named_scope를 다른 범위로 재활용 할 수 있습니다. 라코 디스
이렇게하면 다른 named_scope와 연결할 수 있습니다.
내 코드에서 이것을 사용하고 완벽하게 작동합니다.
도움이 되었기를 바랍니다.
@ PJ : 알다시피, 저는 그것을 고려했지만 나중에 다음과 같이 세 번째 명명 된 범위에 연결할 수 없다고 생각했기 때문에 무시했습니다. 라코 디스
그러나 ab(x, y)
는 b(y)
가 반환하는 모든 것을 반환하므로 체인이 작동 할 것이라고 생각합니다.명백한 것을 다시 생각하게 만드는 방법!