2012-05-26 4 views
0

I n을 배 유사한 문루비 코드

if trigger_data.tt_closed 
     unless trouble_ticket.changes.key?(:status) 
     @run = 0 
     break 
     end 
     unless trouble_ticket.changes[:status][1] == "Closed" 
     @run = 0 
     break 
     end 
    end 

    if trigger_data.tt_assignee 
     unless trouble_ticket.changes.key?(:assigned_to) 
     @run = 0 
     break 
     end 
     unless trouble_ticket.changes[:assigned_to][1] == trigger_data.tt_assignee 
     @run 
     break 
     end 
    end 

어떻게 그 코드를 리팩토링하는? 어쩌면 다이내믹 한 명령문 빌드가 입력을위한 해시를 전달할 수도 있습니다. 나는 metaprogramming에서 초보자입니다. 나에게 조언 해주세요

+1

http://codereview.stackexchange.com에 유사한 질문을하십시오. 이 사이트를 이전하기위한 투표. –

답변

1

글쎄, 당신이 찾고있는 정확히는 아니지만 코드가 많이 줄어 듭니다.

또한 key가 존재하지 않으면 루비에서 nil을 전달하기 때문에?() 메소드를 삭제했습니다. 이는 루틴에서 if 문과 마찬가지로 동일한 의미입니다.

나는 2 개의 if 문을 명확하게하기 위해 두었습니다. :)

changes = trouble_ticker.changes 
if trigger_data.tt_closed && changes[:status][1] != "Closed" 
    @run = 0 
    break 
end 

if t = trigger_data.tt_assignee && changes[:assigned_to][1] != t) 
    @run = 0 
    break 
end