J'espérais que vous pourriez m'aider avec un problème que je suis resté bloqué pendant un bon moment maintenant. J'ai une base de données avec des tickets. Ces tickets contiennent des informations, comme un statut. Mon application utilise l'API Zendesk pour obtenir des informations à partir des tickets de support et les stocker dans ma base de données.Base de données ne se met pas correctement à jour dans Rails
Ce que je veux faire est de stocker l'état précédent et actuel d'un ticket dans ma base de données. J'essaye d'accomplir ceci en stockant les vieilles valeurs avant de mettre à jour ma base de données. Au début, cela semblait fonctionner très bien. Chaque fois que je change l'état dans Zendesk, mon application change le previous_state en l'ancien état et l'état actuel en celui qu'il recueille de Zendesk.
Cependant, il se passe mal chaque fois que j'actualise ma page. Lorsque cela se produit (et que la méthode est appelée à nouveau), pour une raison quelconque, elle met à la fois le paramètre previous_state et l'état sur la même valeur. Je dois faire quelque chose de mal dans une de mes lignes de mise à jour ou de magasin mais je ne peux pas comprendre quoi. J'espère que quelqu'un d'entre vous peut m'aider.
Ticket est la base de données de tickets, le client est la connexion zendesk. La dernière boucle vérifie si le status et previous_status sont identiques et si c'est le cas, essaie de remettre l'état précédent à l'état précédent avant la grosse mise à jour avec zendesk. L'idée est que l'état précédent reste inchangé jusqu'à ce que l'état actuel change.
previousTickets = Ticket.all
Ticket.all.each do |old|
old.update(:previous_status => old.status)
end
client.tickets.each do |zt|
Ticket.find_by(:ticket_id => zt.id).update(
subject: zt.subject,
description: zt.description,
ticket_type: zt.type,
status: zt.status,
created: zt.created_at,
organization_id: zt.organization_id,
)
end
Ticket.all.each do |newTicket|
if(newTicket.status == newTicket.previous_status)
b = previousTickets.find_by(:ticket_id => newTicket.ticket_id)
c = b.previous_status
newTicket.update(:previous_status => c)
end
end
Merci homme, qui l'a fait! J'apprécie beaucoup :) – Robin