Mam n razy podobne stwierdzenia
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
Jak refaktoryzować ten kod? Możliwe, że instrukcja dynamiczna zbudowana jest z przekazaniem pewnego skrótu do wprowadzenia. Jestem nowicjuszem w metaprogramowaniu, proszę o radę
Odpowiedzi:
1 dla odpowiedzi № 1Cóż, może to nie być dokładnie to, czego szukasz, ale bardzo skraca kod.
Ponadto usunąłem te kluczowe metody? (), Ponieważ jeśli klucz nie istnieje, po prostu przekazuje zero, co w Ruby oznacza to samo co false dla instrukcji if.
Zostawiłem to z 2 wyrażeniami if, dla zachowania przejrzystości. :)
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