/ / Ruby Code Refactoring [geschlossen] - Ruby, Refactoring

Ruby Code Refactoring [geschlossen] - Ruby, Refactoring

Ich habe n-mal ähnliche Aussagen

    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

Wie man diesen Code umgestaltet? Vielleicht erstellen Sie eine dynamische Anweisung, indem Sie einen Hash an die Eingabe übergeben. Ich bin Neuling im Metaprogrammieren. Geben Sie mir bitte beraten

Antworten:

1 für die Antwort № 1

Nun, es ist vielleicht nicht genau das, wonach Sie suchen, aber es verkürzt den Code sehr.

Außerdem habe ich diese Schlüssel? () -Methoden entfernt, denn wenn der Schlüssel nicht existiert, übergibt er einfach nil, was in Ruby dasselbe bedeutet wie false für die if-Anweisung.

Ich habe es aus Gründen der Klarheit mit 2 if-Statements verlassen. :)

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