Eu tenho declarações semelhantes às vezes
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
Como refatorar esse código? Talvez declaração dinâmica construir com passar algum hash para entrada. Eu sou novato em metaprogramação. Me dê conselhos, por favor
Respostas:
1 para resposta № 1Bem, pode não ser exatamente o que você está procurando, mas diminui muito o código.
Além disso, eu removi os métodos key? (), Porque se a chave não existe, ela passa apenas nil, que em Ruby significa o mesmo que false para if.
Deixei com 2 se declarações por uma questão de clareza. :)
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