그래서 필자는 필자의 레일 애플리케이션 용 Presenter를 사용하기위한 첫 걸음을 내딛었으며 필자는 일부 코드에 대한 리팩터링을 검토하고있다. 전화 번호 (예 : 전화, 셀 및 팩스)를 멋지게 표시하거나 '없음'으로 표시하는 여러 입력란이 있습니다. 당연히 나는 원래 이것을 보았지만 논리를 내 발표자로 옮겼다. 일단 거기 나는 그것이 발견 모두 같은 그래서 개인 메소드 이름과 송신 기능을 사용하는 방법으로 그것을 리팩토링 :__method__에 의존하는 리팩토링 방법
class CustomerPresenter < BasePresenter
presents :customer
def phone
format_number(__method__)
end
def cell
format_number(__method__)
end
def fax
format_number(__method__)
end
private
def format_number(method)
hande_none customer.send(method) do
h.number_to_phone(customer.send(method), :area_code => true)
end
end
end
아직이 코드는 여전히 건조하지 않는 것 같습니다. format_number는 메서드 이름을 사용하기 때문에 세 개의 별도 메서드를 정의해야합니다. 내가 여기서 할 수있는 것이 더 있다면 궁금했다.
p.s. hande_none은 블록이 없거나 "none"을 반환하면 블록을 반환합니다.