시나리오는 2 가지 경우에 대해 모든 타임 슬롯을 가져오고 싶습니다.코드 4를 리팩터링 할 수 없습니다. 쿼리
도어맨에 해당하는 경우 쿼리가
도어맨이 다음 쿼리에
그래서를 매개 변수를 추가하기 위해 거짓 필요한 경우, 그 같은 쿼리 거의 그 뜻 동일합니다 거의 수정하지 않고 두 경우에 모두 사용할 수 있습니다.
다음은 쿼리 및 코드 :
def self.latest_pickup_date current_zone,doorman
if doorman
latest_timeslot = Timeslot.where(dropoff_slots: '-1', zone_id: current_zone).order(:slot_date).last
else
latest_timeslot = Timeslot.where(dropoff_slots: '-1', zone_id: current_zone, doorman_type: "none").order(:slot_date).last
end
latest_timeslot.nil? ? Date.current : latest_timeslot.slot_date
end
내가 DRY의 접근 방식을 사용하는 방법에 내 코드와 쿼리를 리팩토링하고 싶습니다.
두 경우 모두이 쿼리를 두 번 쓰고 싶지 않습니다. 코드 실습을 사용하여 더 나은 솔루션이 필요합니다. 또는 내가이 올바른 방법으로 일하고 있다면 조언을받을 수 있습니다.
플러스 누군가가 도움을 줄 수있는 좋은 전문적인 코드 관행과 코드 리팩토링이 필요합니다.
귀하의 질문 제목 refactor_ 할 _unable입니다 비어있는 경우
try
를 사용하여, 당신은 왜이다 리팩토링 할 수 없습니까? http://codereview.stackexchange.com/에 대해 알고 있습니까? –@ Зелёный 전문가의 답변을 얻기 위해 게시 한 전문 지식이 많지 않아 전문 지식이 부족합니다. 제 의도는 대답 만하는 것이 아닙니다. 나는 나 자신을 할 수있다. 잘 codereview.stackexchange.com에 대해 모르겠다 – LearningROR
이 질문을 http://codereview.stackexchange.com/ –